在 Angular 2 中过滤之前如何设置 i=array 的索引?

How can I set i=index of array before I filter it in Angular 2?

我目前在对 Angular 中的客户列表进行分页时遇到问题 2。这是我的代码片段:

<tr *ngFor="let client of eClients | filter:term | paginate: { itemsPerPage: 20, currentPage: p}; let i = index" (click)="toggleClient(i)">
   <td>
    <checkbox [(ngModel)]="eClients[i].selected">
     {{client.name}}
    <checkbox>
   </td>
</tr>

问题是索引与数组中的实际位置不对应。例如,如果我转到第 2 页并单击列表中的客户端 #2,我应该得到 22 的索引,但我得到的是 2。当我从一个页面移动到另一个页面时,该索引似乎只跨越 0-19 .它首先过滤数据,然后设置索引。如何在任何过滤器或分页发生之前设置 "i=index"?

P.s。 "checkbox" 是我自己的模块,"term" 是我自己的管道过滤器。

请帮忙。谢谢

*NgFor的变量index为当前结果。对于您的情况,您可以通过 eClients .indexOf(client).

获得 original index

参考plunker.

为 formArray 添加 fromGroupName

[formGroupName] = "getFormGroupIndex(i)"

为此函数计算索引:

getFormGroupIndex(index: number): number {
   return index + (this.TableCurPage - 1) * this.ItemPerpage;}