我有一个自定义功能:
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个对象的控制台中看到正确的结果:
但是在页面上,我具有上一个对象studyPlan
的视图。它不会呈现。
答案 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();