Angular 角度:错误错误:表达式ChangedTerrithasBeenCheckedError:表达式在检查后已更改
怎么了? 在控制台中获取以下错误: AboutComponent.html:1错误:ExpressionChangedTerrithasBeenCheckedError:检查后,表达式已更改。上一个值:“null:未定义”。当前值:“null:[对象]”Angular 角度:错误错误:表达式ChangedTerrithasBeenCheckedError:表达式在检查后已更改,angular,Angular,怎么了? 在控制台中获取以下错误: AboutComponent.html:1错误:ExpressionChangedTerrithasBeenCheckedError:检查后,表达式已更改。上一个值:“null:未定义”。当前值:“null:[对象]” 从'@angular/core'导入{AfterViewInit,Component}; 导出类测试{ } @组成部分({ 选择器:“应用程序关于”, 模板:` {{asd}} ` }) 导出类AboutComponent在ViewInit之后
从'@angular/core'导入{AfterViewInit,Component};
导出类测试{
}
@组成部分({
选择器:“应用程序关于”,
模板:`
{{asd}}
`
})
导出类AboutComponent在ViewInit之后实现{
asd:测试;
ngAfterViewInit():void{
this.asd=新测试();
}
}
当执行角度处理时,在渲染部分之前调用一些生命周期挂钩
然后调用绑定和一些绑定
参考:
该错误是由于在处理完所有绑定后从角度调用此ngAfterViewInit方法造成的。要消除此错误,可以执行以下操作
将代码移动到Ngonit生命周期挂钩中
ngOnInit() {
this.data = new Test()
}
或
将代码包装在setTimeout()中
关于同一问题的精彩文章:您也可以在ngAfterViewInit()中进行更改后强制进行更改检测,如下所示:
这里有一个关于这个的讨论:这也是一个很好的参考:这个答案引导我在我的应用程序中找到了解决方案,其中@ViewChild('form',{static:false})form:FormGroup;必须更改为{static:true}。谢谢。你是welcom@Mirosław
ngAfterViewInit() {
setTimeout(()=>this.data = new Test(),0)
}
import { AfterViewInit, Component, ChangeDetectorRef} from '@angular/core';
export class Test {
}
@Component({
selector: 'app-about',
template: `
{{asd}}
`
})
export class AboutComponent implements AfterViewInit {
asd: Test;
constructor(
private cdRef: ChangeDetectorRef
) { }
ngAfterViewInit(): void {
this.asd = new Test();
this.cdRef.detectChanges();
}
}