在阅读了与变更检测和类似帖子相关的所有材料并且未能解决我的问题后,我在这里发布。
detectChanges()
从订阅内部调用ChangeDetectorRef会导致无限循环。如果我不打电话detectChanges
,我会得到ExpressionChangedAfterCheck
错误。我真的不知道如何解决,为什么会出现ExpressionChangedAfterCheck
错误
ngAfterViewInit() {
this.route.params.subscribe((params) => {
this.userId = params.userId;
if (this.userId != undefined) {
this.loadActivity();
}
else {
alert("Userid not supplied");
}
this.cdRef.detectChanges();
});
}
loadActivity() {
while(this.layers.length > 0){
this.layers.pop();
}
this.loading = true;
this.userService.authenticatedGet(ApiUrls.GetLocation(this.userId, this.activity.from.getTime(), this.activity.to.getTime()), {}).subscribe(
(res:any) => {
this.user = res.user;
this.loading = false;
// other logic
this.cdRef.detectChanges();
console.log("Loading is " + this.loading);
}
);
}
注意:此问题仅在值与 绑定时存在ngIf
。