我正在尝试在我创建的表中填充多行。该表成功填充,但是出现错误:
“ExpressionChangedAfterItHasBeenCheckedError:检查后表达式已更改。上一个值:'1'。当前值:'ah'。”
这不是一个真正的问题,因为错误不会导致我的程序或任何东西崩溃,但是无论何时我更改表格中的任何单位,它都会将所有单位的值更改为“当前值”为在上面的错误。 (在这种情况下,我做了“啊,”见下面的代码)
这是我如何填充表:Angular 2 - ExpressionChangedAfterItHasBeenCheckedError
<div class="row-container">
<div *ngFor="let week of getWeeks()" class="row">
<input class="week" maxlength="2" (input)="type($event.target.value, week)" value="{{getCapacity(week)}}">
</div>
</div>
这就是我如何更新值:
getCapacity(week: Date): string {
if (<conditions are met>) {
const capacity = EntryComponent.capacity[EntryComponent.index];
EntryComponent.index++;
return capacity.value;
}
return 'ah';
}
我没有使用动态组件作为标记,而是动态更改输入标记的值。
我想你可以猜测:你应该已经把价值绑定并改变它。 – Vega
[Angular动态组件加载 - ExpressionChangedAfterItHasBeenCheckedError]可能的副本(https://stackoverflow.com/questions/43917940/angular-dynamic-component-loading-expressionchangedafterithasbeencheckederror) –
在开发模式中,Angular运行每个更改循环两次,并且错误正在发生,因为它们之间发生了变化(它不应该)。这可能是因为你的第一个改变循环正在改变你的“条件满足”条件。 – LarsMonty