【发布时间】:2018-01-20 11:24:16
【问题描述】:
我正在尝试在我创建的表中填充几行。该表已成功填充,但我收到错误:
“ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改。以前的值:'1'。当前值:'ah'。”
这并不是真正的问题,因为该错误不会使我的程序或任何东西崩溃,但是每当我更改表中的任何单位时,它都会将所有单位的值更改为“当前值”在上面的错误中。 (在这种情况下,我将其设为“啊”,请参见下面的代码)
这就是我填充表格的方式:
<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';
}
我没有使用动态组件作为标签,而是动态更改输入标签的值。
【问题讨论】:
-
我想你可以猜到:你应该在 value 中放置一个绑定并更改它。
-
在开发模式下,Angular 运行每个更改循环两次,并且发生错误是因为它们之间发生了更改(它不应该)。这可能是因为您的第一个更改循环正在更改您的“”条件是什么。
-
@LarsMonty 谢谢!将此作为答案,我将其标记为正确。我所要做的就是在循环结束时将我的索引重置为 0,以便再次满足条件。
标签: javascript angular typescript