how should I define an index variable when angular material table is used as ngFor is not used in this table.
I did search for it in the documentation but index is not mentioned any where in it.
<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>
where and how do i define an index variable for the array that I used in this table, so that I can bind the index value in my table itself.
Advertisement
Answer
Can you add index
to let element; let i = index;"
as you’d do with *ngFor
?
<mat-row *matRowDef="let row; columns: displayedColumns; let i = index"></mat-row>
Or like so:
<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>
Working Example: https://stackblitz.com/edit/angular-acdxje?file=app/table-basic-example.html