我有一个Web应用程序,在各种页面中抛出ExpressionChangedAfterItHasBeenCheckedError
错误。这更像是一个警告,而不是一个错误,Web应用程序运行良好。
目前,没有这样的选项来修复代码以消除这个错误,我需要业力测试来忽略它。
当我进行业力测试时,我得到:
Failed: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.
有没有办法忽略这个特定的错误?
我遇到了同样的问题。通常,即使我在运行应用程序的控制台中出现此错误,它仍然不会使Karma / Jasmine测试失败(在这种情况下,我实际上并没有在应用程序中仅在Karma中获得控制台错误)。
我不确定这是不是你的问题,但我的问题与我如何使用ngStyle
有关。不知道为什么这解决了它,但我想我会在这里为其他寻找答案的人添加它。
当我这样做时,我收到了错误:
模板
<div [ngStyle]="{ 'width.px': (!checked ? widthValue : 0) }">Blah</div>
widthValue
正在计算AfterViewInit
。
我也尝试过这种格式(这也给了我错误):
<div [ngStyle]="{ 'width': (!checked ? widthValue : 0) + 'px' }">Blah</div>
当我将逻辑切换到组件并只传入生成的样式对象时,它很好。
模板
<div [ngStyle]="labelWidth(checked)">Blah</div>
零件
labelWidth(checked: boolean): SafeStyle {
return {
width: `${(checked ? this.maxLabelWidth : 0)}px`,
};
}