Angular2更改检测:不更新父组件

时间:2017-07-22 17:53:43

标签: angular angular2-changedetection

我的应用具有以下结构:

GrandParentComponent> ParentComponent> *ngFor ChildComponent

前两个有一个对象数组(items)。 ParentComponent使用@Input()中的GrandParentComponent属性获取该内容。

*ngFor ChildComponent部分在模板中实际上是这样的(parent.component.html):

<div *ngFor="let item of items">
    <div *ngIf="item.isVisible">
        <!-- some code -->
        <ng-container
            dynamicField
            [item]="item"
            (onChange)="onChangeComponent($event)">
        </ng-container>
    </div>
</div>

在此DynamicFieldDirective中,我使用ChildComponent创建ComponentFactory并设置其item属性。 (像这样:link)。

当我更改输入时,ParentComponentChildComponent都有@Output()属性,我在ChildComponent中调用。所以这个事件一直“冒泡”到GrandParentComponent,在那里我更改了一些项isVisible属性:

this.items = this.items.map(***something***);
this.items = [...this.items];
//this is the part, where I try to copy my array, so the change detection works...

ChildComponent中,视图已更新,但问题是,在ParentComponent中,*ngIf="item.isVisible"部分无法正常工作,但未更新。

为什么可能ChildComponent已更新,但ParentComponent没有?

感谢。

0 个答案:

没有答案