我在Angular应用中创建了一个日期选择器组件。当我在* ngIf中使用它时,我得到错误ExpressionChangedAfterItHasBeenCheck。 让我,我使用两个组件P和C. P作为父输入字段。
<INPUT [p]=" '' ">
作为子下拉列表的C在INPUT之后附加。
<DIV>
// drop-down code
</DIV>
当在* ngIf中动态创建P时,我得到了这样的错误:ExpressionChangedAfterItHasBeenCheck。
答案 0 :(得分:4)
正在运行的Angular应用程序是一个组件树。在更改检测期间,Angular会对每个组件执行检查,其中包括按指定顺序执行的以下操作:
每次操作后,Angular会记住它用于执行操作的值。它们存储在组件视图的oldValues属性中。完成对所有组件Angular的检查后。
所以最后,我们需要让它与Angular同步并解决它我们使用setTimeout inside lifecycle hooks.
ngOnInit() {
setTimeout(() => {
// Your Code
});
}
ngAfterViewInit() {
setTimeout(() => {
// Your Code
});
}