我正在努力计算行值的总和。我认为这是因为我在创建行时对行值数组进行了深度克隆。
const gblRowVal1 = new GridRowValues(1, this.color, this.headList.map(x => Object.assign(new RefQuantities(), x )), this.availableColors)
ngModel未指向colomn值,因此未触发ngModelChange,因此未计算总数
(ngModelChange)="onRowClick($event, row, headItem)"
答案 0 :(得分:1)
我建议最简单的方法是在您的班级模型中添加新属性,让我们说total
。当您的GridRowValues
课程适用该属性时,可以很容易地合并总金额。
您可以添加更改事件,在这种情况下使用(ngModelChange)
与实际的ngModel
,即headItem.value
而不是headItem.value[childIndex]
,然后通过当前行:< / p>
<td *ngFor='#headItem of row.headList; #childIndex = index'>
<input [(ngModel)]="headItem.value"
(ngModelChange)="onRowClick(row)"
type="number">
<td>
并且在该更改事件中,您可以计算总数并将其分配给新属性row.total
:
onRowClick(row) {
let total = 0;
row.headList.forEach(x => {
if(x.value) {
total += x.value;
}
})
row.total = total;
}
并像其他任何ngModel
一样显示它:
<input readonly="readonly" [(ngModel)]="row.total" type="number">
<强> DEMO 强>