为什么模型不更新?

时间:2018-08-27 11:52:57

标签: angular angular5

我有一个自定义功能:

public changeClass() {
    this.studyPlan = this.studyPlanClone.slice();
    if (this.filter.classNumber) {
      this.studyPlan = this.studyPlan.filter(study => study.classNumber == this.filter.classNumber);
    }

    console.log(this.studyPlan);
  }

HTML模板是:

<tr *ngFor="let item of studyPlan"></tr>

当我调用changeClass()方法时,它过滤存在的初始对象并返回一个新对象。

我可以在带有3个对象的控制台中看到正确的结果:

enter image description here

但是在页面上,我具有上一个对象studyPlan的视图。它不会呈现。

2 个答案:

答案 0 :(得分:1)

我们可能需要手动触发更改检测。尝试在setTimeout()中添加changeClass()块。

setTimeout(()=>{
  this.changeClass();
}, 0);

答案 1 :(得分:1)

我没有很多代码要进行,但是我要检查的第一件事是,是否将更改检测设置为OnPush。这是“我在.ts中更新了变量,但在浏览器中什么也没改变”的最常见原因。

在这里阅读

https://blog.angular-university.io/onpush-change-detection-how-it-works/

其次,我不知道Suresh是什么意思,通过超时和随机函数调用手动触发。如果要手动触发更改检测,请使用适当的类/功能。

导入构造函数

private _cdRef: ChangeDetectorRef

当您要检测更改时,运行

this._cdRef.detectChanges();