我真的被这个迷住了。基本上,我的数据看起来像这样:
[{'name':'Bank A', movements:[{'direction':'Direct','amount':6000,'client':'A'}, {'direction':'InDirect','amount':-5800,'client':'A'}, {'direction':'Direct','amount':5800,'client':'B'},
{'direction':'InDirect','amount':-5500,'client':'B'},
{'direction':'Direct','amount':5500,'client':'B'}]
银行B,C等也具有类似的数据结构。
现在,我想要以下形式的内容(只是“运动”块):
Client Direct Indirect Amount
A 6000 -5800 200
B 5800 -5500 300
B 5500 0 5500
最后一个元素总是间接0。同样,如果只有一个元素,则间接值为0。
到目前为止,我已经尝试过(但是失败了,也不是很优雅)。
<ng-container *ngIf="result.movements.length==1">
<tr>
<td>{{result.movements[0].clientName}}</td>
<td>{{result.movements[0].amount}}</td>
<td>0</td>
<td>{{result.movements[0].amount}}</td>
</tr>
</ng-container>
<ng-container *ngIf="result.movements.length>1">
<tr *ngFor="let i of Array(result.movements.length-1)>
<td>{{result.movements[i].clientName}}</td>
<td>{{result.movements[i].amount}}</td>
<td>{{result.movements[i+1].amount}}</td>
<td>{{{{result.movements[i].direct + result.movements[i+1].amount}}}}</td>
</tr>
<tr>
<td>{{result.movements[result.movements.length-1].clientName}}</td>
<td>{{result.movements[result.movements.length-1].amount}}</td>
<td>0</td>
<td>{{result.movements[result.movements.length-1].amount}}</td>
</tr
我的想法是将集合表示为数组,循环直到倒数第二个,然后在*ngFor
外显示最后一个。
什么是理想的方法?
答案 0 :(得分:0)
使用条件运算符,让i = index和last = last,请参阅https://angular.io/api/common/NgForOf#local-variables
<tr *ngFor="let movement of result.movements;let i=index;let last=last>
<td>{{movement.clientName}}</td>
<td>{{movement.amount}}</td>
<td>{{last?0:result.movements[i+1].amount}}</td>
<td>{{last?movement.direct:movement.direct + result.movements[i+1].amount}}</td>
</tr>