【问题标题】:How to set Serial Number in Mat-table angular 5如何在 Mat-table angular 5 中设置序列号
【发布时间】:2018-11-03 05:54:10
【问题描述】:

我在我的 Angular 应用程序中使用了一个 mat-table 并成功填充了它,但是数据的原始 id 不是串行的,数据被过滤了,只有一些数据要显示。有没有办法添加一个自动递增的序列号。我的 Html 代码:

    <mat-table #table2 [dataSource]="dataSource2" matSort>

  <ng-container matColumnDef="sn">
    <mat-header-cell *matHeaderCellDef mat-sort-header> SN. </mat-header-cell>
    <mat-cell *matCellDef="let item">{{ index + 1 }}</mat-cell>
  </ng-container>

  <ng-container matColumnDef="description">
    <mat-header-cell *matHeaderCellDef mat-sort-header> Description </mat-header-cell>
    <mat-cell *matCellDef="let item"> {{item.description}} </mat-cell>
  </ng-container>

  <ng-container matColumnDef="start_time">
    <mat-header-cell *matHeaderCellDef mat-sort-header> Start Time </mat-header-cell>
    <mat-cell *matCellDef="let item"> {{item.start_time}} </mat-cell>
  </ng-container>

  <ng-container matColumnDef="end_time">
    <mat-header-cell *matHeaderCellDef mat-sort-header> End Time </mat-header-cell>
    <mat-cell *matCellDef="let item"> {{item.end_time}} </mat-cell>
  </ng-container>

  <ng-container matColumnDef="total_pins">
    <mat-header-cell *matHeaderCellDef mat-sort-header> Total Pins </mat-header-cell>
    <mat-cell *matCellDef="let item"> {{item.total_pins}} </mat-cell>
  </ng-container>

  <ng-container matColumnDef="total_cards">
    <mat-header-cell *matHeaderCellDef mat-sort-header> Total Cards </mat-header-cell>
    <mat-cell *matCellDef="let item"> {{item.total_cards}} </mat-cell>
  </ng-container>

  <ng-container matColumnDef="remarks">
    <mat-header-cell *matHeaderCellDef mat-sort-header> Remarks </mat-header-cell>
    <mat-cell *matCellDef="let item"> {{item.remarks}} </mat-cell>
  </ng-container>

  <mat-header-row *matHeaderRowDef="displayedColumns2"></mat-header-row>
  <mat-row *matRowDef="let row; columns: displayedColumns2;"></mat-row>
</mat-table>

【问题讨论】:

  • 代码中的index 是什么?
  • 你看过this吗?
  • 这是问题所在,我没有分配索引。

标签: angular material-design


【解决方案1】:

只要连续使用这段代码就可以得到索引-

<td mat-cell *matCellDef="let element; let i = index;"> {{i+1}} </td>

这里是

forked working example

【讨论】:

  • 它就像一个魅力,但我遇到了分页器的问题,当我转到下一页时,它又从一个开始。如果我每页显示 10 个项目,那么在转到下一页后,它会以一个而不是 11 个开始。请帮忙。
  • 在表具有可扩展行的情况下,分配索引对我不起作用。有什么替代方法?
  • 分页时不工作。
【解决方案2】:

您可以在 ngFor 循环中添加增量序列号,即

<meta-table *ngFor="let item of items; let i = index;">
  <ng-container matColumnDef="sn">
    <mat-header-cell *matHeaderCellDef mat-sort-header> SN. </mat-header-cell>
    <mat-cell *matCellDef="let item">{{ i + 1 }}</mat-cell>
  </ng-container>
</meta-table>

【讨论】:

  • 分页时不工作。
【解决方案3】:

获取下一页的自动递增索引值。

([页面索引] * [页面大小] + [行索引 + 1])

表格的td单元循环源码

<ng-container matColumnDef="id">
 <th mat-header-cell *matHeaderCellDef mat-sort-header> No.</th>
 <td mat-cell *matCellDef="let item; let i = index">
    {{ (paginatorRef.pageIndex * paginatorRef.pageSize) + (i + 1) }}
 </td>
</ng-container>

mat-paginator 源代码

<mat-paginator
    fxFlex="100"
    #paginatorRef
    [length]="5"
    [pageSize]="5"
    [pageSizeOptions]="[5, 10, 25, 100]">
</mat-paginator>

[ 注意:将本地引用作为#paginatorRef 添加到您的 分页器代码]

【讨论】:

  • 这个答案是正确的。只提到“{{i+1}}”的答案是部分正确的,因为它只适用于第一页,第二页和后面的页面总是从 1 开始,我猜这有点错误的信息。
  • 这个答案只对这个问题正确
【解决方案4】:

如果你使用 angular 的分页器,那么
<td mat-cell *matCellDef="let item; let i = index">
    {{ (paginatorRef.pageIndex * paginatorRef.pageSize) + (i + 1) }}
 </td>

<mat-paginator
    #paginatorRef>
</mat-paginator>

如果您不使用分页器并且整个表格在一页中,那么

<td mat-cell *matCellDef="let element; let i = index;"> {{i+1}} </td>

【讨论】:

    猜你喜欢
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 2019-08-23
    • 2022-08-22
    相关资源
    最近更新 更多