包装纸中有2个组件,包装纸的高度固定。 ToggleComponent具有绑定到height字段的height css属性和一个用于更改height字段的按钮。 TestComponent承担其余高度。它具有绑定到其clientHeight的测试属性。 重点是将DOM绑定到通过其绑定而可能会从其他组件更改的某些内容,这就是我使用clientHeight的原因。如果在TestComponent上有* ngIf指令,则在更改ToggleComponent.height时,会发生ExpressionChangedAfterItHasBeenCheckedError。
错误:
Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'test: 200'. Current value: 'test: 100'.
at viewDebugError (core.js:20440)
at expressionChangedAfterItHasBeenCheckedError (core.js:20428)
at checkBindingNoChanges (core.js:20530)
at checkNoChangesNodeInline (core.js:23403)
at checkNoChangesNode (core.js:23390)
at debugCheckNoChangesNode (core.js:23994)
at debugCheckDirectivesFn (core.js:23922)
at Object.eval [as updateDirectives] (testChild.html:2)
at Object.debugUpdateDirectives [as updateDirectives] (core.js:23911)
at checkNoChangesView (core.js:23289)
答案 0 :(得分:0)
尝试添加这样的代码:
import { ChangeDetectorRef } from '@angular/core';
您的课程必须实现OnAfterViewChecked
constructor(private cdRef:ChangeDetectorRef) {}
ngAfterViewChecked()
{
this.cdRef.detectChanges();
}
但是要获得最佳答案,请显示您的代码。