2017-08-02 71 views
1

試圖瞭解如何總結表中的列,每一個都添加* ngFor(如todo-list),我想總結一列,我怎麼能在角2中做到這一點? 所以我有表是這樣的:angular 2如何總結列ng對於

<tr *ngFor="let item of items"> 
    <td>{{item.num1 }}</td> 
    <td>{{item.num2}}</td> 
    <td>{{item.num3}}</td> 
    <td>{{item.num4}}</td> 
    <td>{{item.num5}}</td> 
</tr> 

,我需要總結如下像所有列:

<tr *ngFor="let item of items"> 
    <td>{{item.num1 }}</td> 
    <td>{{item.num2}}</td> 
    <td>{{item.num3}}</td> 
    <td>{{item.num4}}</td> 
    <td>{{item.num5}}</td> 
</tr> 
<tr> 
    <td>SUM1</td> 
    <td>SUM2</td> 
    <td>SUM3</td> 
    <td>SUM4</td> 
    <td>SUM5</td> 
</tr> 
+0

總結TS代碼並使用綁定顯示它。 '* ngFor'不加和。 –

+0

它看起來很直接,你試了什麼 – Skeptor

回答

3

你將不得不創建一個getSum(索引:號碼):在號碼的方法你角2組件類,像這樣:

getSum(index: number) : number { 
    let sum = 0; 
    for(let i = 0; i < this.items.length; i++) { 
    sum += this.items[i][index]; 
    } 
    return sum; 
} 

,並在你的HTML,通過更換您的SUMX

<td>{{ getSum(0) }} </td><td>{{ getSum(1) }}</td> ... 

你當然也可以使用ngFor來創建多個td標籤,如果需要的話。

[編輯]:有你需要根據你的小提琴確切的代碼:

getSum(column) : number { 
    let sum = 0; 
    for(let i = 0; i < this.list.length; i++) { 
     sum += this.list[i][column]; 
    } 
    return sum; 
    } 

和HTML:

<td>{{ getSum('newInput') }}</td><td>{{ getSum('newOutput') }}</td> 

[編輯2]:只是爲了完整性,還可以

var sum = this.items[i]['myfield'].reduce(function(x, y) { return x + y; }, 0); 
+0

我做到了,但現在有空場 – shoopik

+0

無法讀取未定義的屬性'0' – shoopik

+0

你使用了這個關鍵字嗎? this.items?看來你沒有訪問正確的屬性。如果你有一個矩陣(例如:items:number [] []),this.items [i] [index]就可以工作。 –

-1
getSum(): number { 
    let sum = 0; 
    for (let i = 0; i < this.items.length; i++) { 
     sum += this.items[i].num1; 
    } 
    return sum; 
    } 
:使用降低功能,而不是在getSum方法使用循環做陣列的總和
+0

從另一個答案複製代碼塊,併發布爲唯一的答案不幫助任何人。這個問題如何提供比你複製代碼的答案更好的解決方案? – Claies

+0

this.items [i] .num1;請注意點運算符以訪問必填字段。提供的答案使用矩陣格式。這給了我一個錯誤。 –