作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
试图了解如何对表中的列求和,每个列都添加了 *ngFor(如待办事项列表),我想对其中一列求和,如何在 Angular 2 中进行求和?所以我有这样的表:
<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>
最佳答案
您必须在 Angular 2 Component 类中创建一个 getSum(index: number): number 方法,如下所示:
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 标签。
[编辑]:根据您的 fiddle 获得您需要的确切代码:
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]:为了完整起见,您还可以使用 reduce 函数对数组求和,而不是在 getSum 方法中使用循环:
var sum = this.items[i]['myfield'].reduce(function(x, y) { return x + y; }, 0);
关于angular 2 如何对列 ngFor 求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45467550/
我是一名优秀的程序员,十分优秀!