2017-07-23 30 views
1

我試圖沒有成功來計算行值的總和。我認爲這是因爲我在創建行時深度克隆了行值數組。無法觸發事件ngModelChange做深度克隆時

 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

+0

你開到你的類(對象)總量增加新特性的建議嗎? – Alex

+0

hello again @ AJT_82,是的,我嘗試添加總數作爲GridRowValues的一個屬性,但問題是當我修改輸入 – kyserslick

回答

1

我的建議是最簡單的方法,是爲你的班級模型添加一個新的屬性,比如說total。如果該房產適用於您的GridRowValues類,那麼納入總額相當容易。

可以與實際ngModel添加一個變化事件,在這種情況下使用(ngModelChange),即headItem.value代替headItem.value[childIndex]並在傳遞當前行:

<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

+0

的工作方式(如sharm,tkx @ AJT_82)時,不會觸發ngModelChange。我想我錯過的是通過headItem值的索引,不知何故它不會觸發模型上的變化。 – kyserslick

+0

很高興聽到它的工作!要提到的是,ngModelChange **被解僱了,但是由於ngModel指向的不是實際的數據,你沒有得到理想的結果:) – Alex