在克隆深度值时无法触发事件ngModelChange

时间:2017-07-23 15:08:13

标签: angular typescript

我正在努力计算行值的总和。我认为这是因为我在创建行时对行值数组进行了深度克隆。

      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)"

Plunker grid

1 个答案:

答案 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