Shi*_*ora 13 angular angular-material-5
我试图在html中获取表格中的行索引,这是使用角度材料v5.2实现的.有没有方法可以获得索引?
参考代码:
<div class="example-container mat-elevation-z8">
<div class="example-header">
<mat-form-field>
<input matInput (keyup)="applyFilter($event.target.value)" placeholder="Filter">
</mat-form-field>
</div>
<mat-table #table [dataSource]="dataSource">
<!-- 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">
<button (click)="doSomething()"> Do something</button>
</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)
方法doSomething是需要索引的.
任何帮助将不胜感激.
zgl*_*uis 33
使用indexOf是一种巨大的资源浪费.正确的方法是使用索引的值初始化变量,如下所示:
<ng-container matColumnDef="position">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Num. </th>
<td mat-cell *matCellDef="let element; let i = index">{{i}}</td>
</ng-container>
Run Code Online (Sandbox Code Playgroud)
She*_*nga 13
任何使用 Angular6+ 的人都应该使用let i = dataIndex
而不是let i = index
在这个Github 问题中解释。
这是 HTML 片段
<ng-container matColumnDef="position">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Num. </th>
<td mat-cell *matCellDef="let element; let i = dataIndex">{{i + 1}}</td>
</ng-container>
Run Code Online (Sandbox Code Playgroud)
bug*_*ugs 10
您可以使用的filteredData
属性dataSource
,如下所示:
<ng-container matColumnDef="weight">
<th mat-header-cell *matHeaderCellDef> Header</th>
<td mat-cell *matCellDef="let element"> {{dataSource.filteredData.indexOf(element)}} </td>
</ng-container>
Run Code Online (Sandbox Code Playgroud)
使用@ user3891850解决方案(let i = index;
)时,如果是分页,则索引将是此页面中的索引,而不是全局对象中的索引,因此在分页时必须小心。
例
小智 9
如果您遇到这个问题并且您使用的paginator
是您在此处获得的索引:
<td mat-cell *matCellDef="let element; let i = index">{{i}}</td>
Run Code Online (Sandbox Code Playgroud)
将是表上显示的当前索引。例如,如果您在第 2 页并且您的页面大小为 5,那么表格的第一个索引将为 0 而不是 5(或第 6 个项目)。所以你可以做些什么来获得真正的索引是这样的:
index =
this.paginator.pageIndex > 0
? index + this.paginator.pageIndex * this.paginator.pageSize
: index;
Run Code Online (Sandbox Code Playgroud)
如果分页器在第一页,索引不会改变。否则将 pageIndex 乘以 pageSize 并将其添加到索引中。
小智 7
增加 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>
Run Code Online (Sandbox Code Playgroud)
小智 6
我在使用Angular Material Table时发现了2种情况
*matCellDef="let row = index"
如果表具有单行模板,则使用*matCellDef="let row = dataIndex"
如果表有多个行模板则使用 归档时间: |
|
查看次数: |
22639 次 |
最近记录: |