ng用于删除项目时不更新



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

<div class="child" *ngFor="let child of sharedParams.children">
        ...
</div>

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

export class SharedParams {    
    private _children: Child[];
    constructor(children: Child[]){
        this._children = children;
    }
    get children(){
        return this._children;
    }
    set children(children: Child[]){        
        this._children = children;
    }
}

在数组中添加或更新项目时,将触发 ngFor 并更新 DOM。但是,当删除某个项时,数组会更改,但 DOM 不会删除该项的条目。

我还尝试使用"push"和"splice"手动修改数组而不是替换它。但行为仍然是名字。删除项目时,DOM 永远不会更新。

任何帮助将不胜感激。

您可以使用 ChangeDetectorRef 每 0.5 秒或更长时间检查和更新一次列表...

例如:

constructor(private ref: ChangeDetectorRef) {
    console.log('Hello PhotoComponent Component');  
    setInterval(() => {
      this.ref.detectChanges();
    }, 500);  
  }

就我而言,ChangeDetectorRef.detectChanges()做到了。当您从可观察量更新模型时,例如 Http.get() 的响应时,似乎会出现问题。

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