ngFor 在删除项目时不更新

C. *_*ans 6 ionic2 angular

我在页面模板(Ionic 2)中使用 *ngFor 。

<div class="child" *ngFor="let child of sharedParams.children">
        ...
</div>
Run Code Online (Sandbox Code Playgroud)

在应用程序内部的某个地方,我会在检测到更改(添加、更新、删除)时更新 children 数组。我这样做是为该属性分配一个新数组:

export class SharedParams {    
    private _children: Child[];

    constructor(children: Child[]){
        this._children = children;
    }

    get children(){
        return this._children;
    }

    set children(children: Child[]){        
        this._children = children;
    }
}
Run Code Online (Sandbox Code Playgroud)

当在数组中添加或更新项目时,会触发 ngFor 并更新 DOM。然而,当一个项目被移除时,数组会改变,但 DOM 不会移除该项目的条目。

我还尝试使用“push”和“splice”手动修改数组而不是替换它。但行为保持名称。当一个项目被移除时,DOM 永远不会更新。

任何帮助将不胜感激。

Kle*_*nig 0

就我而言,ChangeDetectorRef.detectChanges()成功了。当您从 Observable 更新模型时,例如 Http.get() 的响应,问题似乎就会出现。

使用NgZone.run()没有帮助,我之前尝试过。