在我的页面控制器中,我需要更新UI,并且看起来在该特定点强制调用chageDetector.detectChanges()。 会发生什么:我正在我的模型中重新分配一个字符串属性,其值会改变我的一些UI。 只要我调用detectChanges()方法,该属性就会获取 其旧值 。 我只会将名称和值更改为我的代码,但除此之外,以下是我正在使用的内容:
首先,我有一个枚举:
enum TypeEnum { TypeA: 'A', TypeB: 'B' }
然后我的控制器:
selectType(type: TypeEnum) { //type has value 'B'
this.verify = true;
this.setFieldXOnTypeChange(type);
//this.model.type has value 'A'
this.model.type = type; //this.model.type = 'B'
//now this.model.type has value 'B'
//other stuff is calculated
this.scrollToBottom();
this.onFieldYReturn(null, true, true);
this.typeAccordionHeader.value = type;
if (type == typeEnum.TypeB) {
this.model.date = this.today;
}
this.setPageTitleForType(type);
//before call > this.model.type: 'B'
this.changeDetector.detectChanges();
// after call > this.model.type: 'A'
}
这是我以前从未体验过的行为:我知道changeDetector的目的是将模型更改应用于组件,没有别的。 任何人都可以解释这种行为,以防万一,如何避免它? 提前谢谢!