在ngFor期间并排显示当前和下一个记录

时间:2018-12-06 22:20:02

标签: angular angular6

我真的被这个迷住了。基本上,我的数据看起来像这样:

[{'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外显示最后一个。

什么是理想的方法?

1 个答案:

答案 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>