get index of row in angular material table v5

后端 未结 8 705
别那么骄傲
别那么骄傲 2020-12-08 19:43

I\'m trying to get the index of row in table, in html, which has been implemented using angular material v5.2. Is there any method available to get the index?

The co

相关标签:
8条回答
  • 2020-12-08 20:07

    You can use the filteredData property of your dataSource, like this:

    <ng-container matColumnDef="weight">
      <th mat-header-cell *matHeaderCellDef> Header</th>
      <td mat-cell *matCellDef="let element"> {{dataSource.filteredData.indexOf(element)}} </td>
    </ng-container>
    

    Demo

    With the @user3891850 solution(let i = index;), in case of pagination, the index will be the index in this page and not in the global object so you must be careful in case of pagination. example

    0 讨论(0)
  • 2020-12-08 20:09

    I searched a lot, but for my case "indexOf" scenario doesn't work properly then I found this answer, and it does exactly what I need.

    let i = index;
    i + (paginator.pageIndex * paginator.pageSize);
    
    0 讨论(0)
  • 2020-12-08 20:20

    Include 'let i = index' in *matRowDef

    0 讨论(0)
  • 2020-12-08 20:21

    In case you run into this issue and you are using a paginator the index you get here:

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

    will be the current index displayed on the table. For instance, if you are on page 2 and your page size is 5, then the first index of the table will be 0 and not 5 (or the 6th item). So what you can do to get the true index is something like this:

    index =
          this.paginator.pageIndex > 0
            ? index + this.paginator.pageIndex * this.paginator.pageSize
            : index;
    

    If the paginator is on page one, index doesn't change. Otherwise multiply the pageIndex by the pageSize and add it to the index.

    0 讨论(0)
  • 2020-12-08 20:25

    Using indexOf is an enormous waste of resources. The right way is initializing a variable with index's value, like this:

    <ng-container matColumnDef="position">
      <th mat-header-cell *matHeaderCellDef mat-sort-header> Num. </th>
      <td mat-cell *matCellDef="let element; let i = index">{{i + 1}}</td>
    </ng-container>
    

    https://material.angular.io/components/table/examples

    UPDATE:

    If you are using pagination the index can be calculated this way:

    <ng-container matColumnDef="position">
      <th mat-header-cell *matHeaderCellDef mat-sort-header> Num. </th>
      <td mat-cell *matCellDef="let i = index">
      {{this.paginator.pageIndex == 0 ? i + 1 : 1 + i + this.paginator.pageIndex * this.paginator.pageSize}}
      </td>
    </ng-container>
    
    0 讨论(0)
  • 2020-12-08 20:26

    increase position number in mat-table....

    <ng-container matColumnDef="index">
      <th mat-header-cell *matHeaderCellDef> Sr.No </th>
      <td mat-cell *matCellDef="let i=index"> {{i+1}} </td>
    </ng-container>
    
    0 讨论(0)
提交回复
热议问题