如何在角材料表中定义索引

pus*_*tel 41 typescript angular-material2 angular

当使用角度材料表时,如何定义索引变量,因为此表中未使用ngFor.

我确实在文档中搜索了它,但索引没有被提到任何位置.

  <mat-table #table [dataSource]="dataSource">

    <!--- Note that these columns can be defined in any order.
          The actual rendered columns are set as a property on the row definition" -->

    <!-- Position Column -->
    <ng-container matColumnDef="position">
      <mat-header-cell *matHeaderCellDef> No. </mat-header-cell>
      <mat-cell *matCellDef="let element"> {{element.position}} </mat-cell>
    </ng-container>

    <!-- Name Column -->
    <ng-container matColumnDef="name">
      <mat-header-cell *matHeaderCellDef> Name </mat-header-cell>
      <mat-cell *matCellDef="let element"> {{element.name}} </mat-cell>
    </ng-container>

    <!-- Weight Column -->
    <ng-container matColumnDef="weight">
      <mat-header-cell *matHeaderCellDef> Weight </mat-header-cell>
      <mat-cell *matCellDef="let element"> {{element.weight}} </mat-cell>
    </ng-container>

    <!-- Symbol Column -->
    <ng-container matColumnDef="symbol">
      <mat-header-cell *matHeaderCellDef> Symbol </mat-header-cell>
      <mat-cell *matCellDef="let element"> {{element.symbol}} </mat-cell>
    </ng-container>

    <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
    <mat-row *matRowDef="let row; columns: displayedColumns;"></mat-row>
  </mat-table>
</div>
Run Code Online (Sandbox Code Playgroud)

在哪里以及如何为我在此表中使用的数组定义索引变量,以便我可以在表中绑定索引值.

rit*_*taj 83

index可以let element; let i = index;"像你一样添加*ngFor吗?

<mat-row *matRowDef="let row; columns: displayedColumns; let i = index"></mat-row>
Run Code Online (Sandbox Code Playgroud)

或者像这样:

<ng-container matColumnDef="index">
  <mat-header-cell *matHeaderCellDef> Index </mat-header-cell>
  <mat-cell *matCellDef="let element; let i = index;">{{i}}</mat-cell>
</ng-container>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果启用分页,它会在每页重复 (4认同)
  • 作品!但我很想知道这是从哪里来的......你怎么知道有一个可变索引可供使用?有人可以进一步解释一下吗? (3认同)
  • 如果你有分页,你可以计算行索引,如“{{this.paginator.pageIndex * this.paginator.pageSize + i}}” (3认同)
  • 没问题。这是一个有效的StackBlitz示例。https://stackblitz.com/edit/angular-acdxje?file=app/table-basic-example.html (2认同)

ada*_*101 43

对于multiTemplateDataRowsmat-table的属性设置为true的任何人,您都无法使用index.相反,你使用dataIndex或者renderIndex.

<mat-cell *matCellDef="let row; let i = dataIndex;">{{i}}</mat-cell>
Run Code Online (Sandbox Code Playgroud)

请参阅https://github.com/angular/material2/issues/12793

  • 请注意,如果启用分页,它会在每页重复 (4认同)
  • 谢谢你,你拯救了我的一天:D (2认同)
  • 你值得所有的赞成票!我花了一个多小时试图弄清楚为什么我的索引不起作用,直到我发现了你的金块!非常感谢! (2认同)

Dan*_*cki 9

对于那些在使用超过 1 页的分页时保持正确索引的问题的人。当您拥有可编辑元素时,这一点尤其重要,因此您使用routerLink来添加/编辑/删除所选元素。

<ng-container matColumnDef="title">
 <mat-header-cell *matHeaderCellDef mat-sort-header>Title</mat-header-cell>
 <mat-cell *matCellDef="let book; let i = index;" fxLayoutAlign.lt-md="center center">
  <button mat-button [routerLink]="[i + (paginator.pageIndex * paginator.pageSize)]" routerLinkActive="active"</button>
 </mat-cell>
</ng-container>
Run Code Online (Sandbox Code Playgroud)

<mat-paginator #paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 25, 100]"></mat-paginator>
Run Code Online (Sandbox Code Playgroud)

本质上,i + (paginator.pageIndex * paginator.pageSize)是解决方案,但它从0 开始计数。如果您想从1开始索引,只需将其设为(i+1) + (paginator.pageIndex * paginator.pageSize)。值得注意的是,您确实需要#paginator[pageSize]="VALUE"


Ram*_*Ram 7

如果有人使用<mat-paginator ../>,那么 index 可以解释如下

<mat-cell *matCellDef="let element; index as i"> {{paginator.pageSize * paginator.pageIndex + i + 1}}</mat-cell>
Run Code Online (Sandbox Code Playgroud)


Ela*_*ode 6

从角5,你可以别名index局部变量i使用index as i

<ng-container matColumnDef="rowIndex">
  <mat-header-cell *matHeaderCellDef> Index </mat-header-cell>
  <mat-cell *matCellDef="let element;index as i;"> {{ i }} </mat-cell>
</ng-container>
Run Code Online (Sandbox Code Playgroud)