ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'width: 93.7598541666%'. Current value: 'width: 93.7604513889%'.
at viewDebugError (core.js:17871)
at expressionChangedAfterItHasBeenCheckedError (core.js:17859)
at checkBindingNoChanges (core.js:18059)
at checkNoChangesNodeInline (core.js:27637)
at checkNoChangesNode (core.js:27624)
at debugCheckNoChangesNode (core.js:28228)
at debugCheckDirectivesFn (core.js:28156)
at Object.eval [as updateDirectives] (AppComponent.html:101)
at Object.debugUpdateDirectives [as updateDirectives] (core.js:28145)
at checkNoChangesView (core.js:27523)
我收到上述错误,但代码仍然继续
<div [ngStyle]="{
'margin-left':task.getFrontMargin(dayStart, hourResolution)*100+'%',
'width':task.getWidthPercent(dayStart, hourResolution)*100+'%'
}"
class="flag" [ngClass]="task.type">
</div>
答案 0 :(得分:0)
当我们在开发人员模式下以角度工作时,会发生这种错误,因为在开发人员模式下,角度执行两次检查以确认该属性是否具有与上一次检查相同的值。
现在,由于您的宽度根据getWidthPercent()的不同而有所变化,因此可以更改角度检查之间的宽度。这会提示错误。
要删除它,您可以使用setTimeOut()方法在ngOnInit()方法中设置宽度 通过这种方式 - 使用打字稿中的本地引用获取选定的div,并在ngOnInit方法内部使用
@ViewChild('localReference') private element: ElementRef;
ngOnInit() {
setTimeOut(()=> {
element.nativeElement.style.width = task.getWidthPercent(dayStart,
hourResolution)*100
});
}