在 Angular material table 中更改时计算并显示输入字段的总计
Calculate and display total of input field when changing in Angular material table
我有一个 angular material table,里面有输入字段。需要计算总数(无按钮)并显示在底部。同样当改变输入的数字时,应该重新计算和显示。它计算并显示 ts 文件中内容的总和,但当输入框中发生变化时,连接。
HTML代码
<ng-container matColumnDef="tuesday">
<th mat-header-cell *matHeaderCellDef> tuesday </th>
<td mat-cell *matCellDef="let transaction">
<mat-form-field>
<input [(ngModel)]="transaction.tuesday" placeholder="Field Name" matInput ="number"/>
</td>
<td mat-footer-cell *matFooterCellDef> {{getTotalCostTuesday() | currency}} </td>
</ng-container>
TS code
transactions: PeriodicElement[] = [
{ project: 'Hydrogen', monday:1, tuesday:2},
{ project: 'Helium', monday:1 ,tuesday: 5 },
{ project: 'Lithium' , monday:1, tuesday: 3},
{ project: 'Beryllium' , monday:1, tuesday: 4 },
];
getTotalCostTuesday() {
return this.transactions.map(t => t.tuesday
).reduce((acc, value) => acc + value, 0);
}
连接是因为 value
(来自输入字段)是一个字符串。加法前改成数字。
getTotalCostTuesday() {
return this.transactions.map(t => t.tuesday
).reduce((acc, value) => acc + parseInt(value), 0);
}
我有一个 angular material table,里面有输入字段。需要计算总数(无按钮)并显示在底部。同样当改变输入的数字时,应该重新计算和显示。它计算并显示 ts 文件中内容的总和,但当输入框中发生变化时,连接。 HTML代码
<ng-container matColumnDef="tuesday">
<th mat-header-cell *matHeaderCellDef> tuesday </th>
<td mat-cell *matCellDef="let transaction">
<mat-form-field>
<input [(ngModel)]="transaction.tuesday" placeholder="Field Name" matInput ="number"/>
</td>
<td mat-footer-cell *matFooterCellDef> {{getTotalCostTuesday() | currency}} </td>
</ng-container>
TS code
transactions: PeriodicElement[] = [
{ project: 'Hydrogen', monday:1, tuesday:2},
{ project: 'Helium', monday:1 ,tuesday: 5 },
{ project: 'Lithium' , monday:1, tuesday: 3},
{ project: 'Beryllium' , monday:1, tuesday: 4 },
];
getTotalCostTuesday() {
return this.transactions.map(t => t.tuesday
).reduce((acc, value) => acc + value, 0);
}
连接是因为 value
(来自输入字段)是一个字符串。加法前改成数字。
getTotalCostTuesday() {
return this.transactions.map(t => t.tuesday
).reduce((acc, value) => acc + parseInt(value), 0);
}