与分页一起使用时ngFor的索引问题

时间:2019-04-02 03:24:26

标签: javascript angular

我正在使用分页和ngFor以及searchPipe。问题出在ngFor的索引上。我的分页器每页显示10个项目,但是问题是当我转到ngFor的第二页索引时返回0。因此,对于我的数据集中的每个页面,我基本上只能从0-10个元素进行迭代。任何帮助表示赞赏。

 <tr *ngFor="let item of testdata | customStoreFilter:searchRetail | paginate: { itemsPerPage: 10, currentPage: p };let i = index"
          [ngClass]="eachmodel[i] ? 'active': ''" id="row{{i}}">
<td>
            <textarea  [(ngModel)]='remarks[i]'
              (change)="isRemarksModelChanged($event.target.value,i,item)"></textarea>
          </td>
</tr>

所以让我=索引部分无法正常工作。可以说我的测试数据中有50个项目。它应该从0到50进行迭代,而由于itemsPerPage是10,所以它应从0到第10个元素在每个页面中进行迭代。

4 个答案:

答案 0 :(得分:2)

我正在写角度为4+的文字,参考[ngx-pagination] [1],

<div class="list">
    <ul>
        <li *ngFor="let item of collection | paginate: { itemsPerPage: 10, currentPage: page };index as i">
    <span *ngIf="page==1">{{(i+1)}}{{item}}</span>
    <span *ngIf="page>1">{{((page-1)*10)+(i+1)}}{{ item }}</span>
  </li>
    </ul>

    <pagination-controls (pageChange)="page =$event">
</pagination-controls>

 export class AppComponent {
  page:number = 1;
  collection = [];
  constructor() {
    for (let i = 1; i <= 100; i++) {
      this.collection.push(`item ${i}`);
    }
  }
}

答案 1 :(得分:0)

如果我正确理解了您的问题,这就是您想要的。

<tr
  *ngFor="let item of testdata | customStoreFilter:searchRetail | paginate: { itemsPerPage: 10, currentPage: p };index as i"
  [ngClass]="eachmodel[i] ? 'active': ''" id="row{{i}}">
  <td>
    <textarea [(ngModel)]='remarks[i]' (change)="isRemarksModelChanged($event.target.value,i,item)"></textarea>
  </td>
</tr>

如果您不理解,请尝试上面的一个,让我知道我会对其进行编辑。

答案 2 :(得分:0)

  

我确实不知道您要在哪里显示每页的项目列表,但是您是否添加了如下所示的分页控件:

<pagination-controls (pageChange)="p = $event"></pagination-controls>.

因此,首先尝试使用简单的UL / Li

答案 3 :(得分:0)

<tr *ngFor="let user of users | paginate:  { itemsPerPage: itemsPerPage, currentPage: currentPage, totalItems: totalItems }; let j = index;">
    <th scope="row">{{ (currentPage - 1) * itemsPerPage + j + 1 }}</th>
    <td>{{user.username}}</td>
    <td>{{user.email}}</td>
    <td>
    </td>
  </tr>

这可能是一个解决方案。