角度7中的递归属性调用

我正在使用Angular 7,并且有一个组件使用了只读属性来返回值。

当我在* ngFor绑定中使用此属性时,发生了递归调用。

组件代码为:

import { Component,OnInit,OnDestroy } from '@angular/core';
import { DialogBox } from './dialog-box';
import { getOrCreateValue,setvalue,getvalue } from '@app/helpers/data.store';
import { DialogService } from '@app/core/services';
import { Subscription } from 'rxjs';


@Component({
    selector: 'sa-dialog-container',templateUrl: './dialog-container.component.html',styleUrls: ['./dialog-container.component.css']
})
export class DialogContainer implements OnInit,OnDestroy {

    activeDialog: DialogBox;

    constructor(dialogService: DialogService) {
        const subscription = dialogService.dialog.subscribe(options => {
            if (options) {
                const dialog = new DialogBox(this,options);
                this.dialogs.push(dialog);
                this.activeDialog = dialog;
            }
        });

        setvalue<any,string>(this,"subscription",subscription);
    }

    get dialogs(): DialogBox[] {
        return getOrCreateValue(this,"dialogs",() => []);
    }

    get minimizedDialogs(): DialogBox[] {
        return this.dialogs.filter(d => d.minimized).reverse();
    }

    get maximizedDialogs(): DialogBox[] {
        return this.dialogs.filter(d => !d.minimized);
    }

    ngOnInit() {

    }

    ngOnDestroy(): void {
        const subscription: Subscription = getvalue<any,"subscription");
        subscription.unsubscribe();
    }
}

模板代码为:

<div class="dialog-base">
  <ng-container *ngFor="let dialog of minimizedDialogs">
    <div class="min-dialog" (click)="dialog.restore()">{{dialog.title}}</div>
  </ng-container>
</div>

控制台的屏幕截图:

角度7中的递归属性调用

更改跟踪器似乎可以递归检测。

lixiangzyz 回答:角度7中的递归属性调用

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3042890.html

大家都在问