我需要在运行时动态创建多个组件的实例。
我在互联网上找到了几个例子,包括StackOverflow和angular.io页面本身。
但是当我为组件模型赋值时,总是会收到异常ExpressionChangedAfterItHasBeenCheckedError。
即使是此功能的专用示例也会引发相同的异常: Angular.io article Plunker
错误错误:ExpressionChangedAfterItHasBeenCheckedError:检查后表达式已更改。上一个值:'undefined'。当前价值:'Bombasto'。看起来这个视图是在其父级及其子级被脏检查后创建的。它是否已在变更检测钩子中创建?
我应该忽略这个还是可以/应该修复它?
答案 0 :(得分:9)
这是因为您正在改变ngAfterViewInit
中的组件状态。请参阅issue here讨论行为。
在您的情况下,您可以在ngOnInit
中移动初始创建。
ngOnInit() {
this.loadComponent();
this.getAds();
}
答案 1 :(得分:3)
在更一般的情况下
使用
this._changeDetectionRef.detectChanges();
在方法结束时更新到组件状态的后期,
...不要忘记添加
private _changeDetectionRef : ChangeDetectorRef
作为拥有方法的Component的构造函数的参数。
参见discution here