如何在表格中添加带有按钮的列?
html:
<table mat-table [dataSource]="dataSource">
<ng-container [matColumnDef]="column.value" *ngFor="let column of allCols;">
<th mat-header-cell *matHeaderCellDef > {{column.displayName}}</th>
<td mat-cell *matCellDef="let row"> {{row[column.lowercaseValue]}}</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
这是我的示例表,在 stackblitz 上有一个没有按钮的循环.
最佳答案
只需添加一个 <ng-container>
使用按钮,不要忘记将 displayedColumns 连接到一个具有列名称的数组。看代码中的注释
<table mat-table [dataSource]="dataSource">
<!--- this is our columns-->
<ng-container [matColumnDef]="column.value" *ngFor="let column of allCols;">
<th mat-header-cell *matHeaderCellDef > {{column.displayName}}</th>
<td mat-cell *matCellDef="let row"> {{row[column.lowercaseValue]}}</td>
</ng-container>
<!--we add a new column with the matColumnDef="deleteButton"-->
<ng-container matColumnDef="deleteButton" >
<th mat-header-cell *matHeaderCellDef > Delete</th>
<td mat-cell *matCellDef="let row"> <button mat-button>Delete</button></td>
</ng-container>
<!--now concat to displayedColumns an array with the buttons
using .concat(['deleteButton'])
-->
<tr mat-header-row *matHeaderRowDef="displayedColumns.concat(['deleteButton'])"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns.concat(['deleteButton']);"></tr>
</table>
查看您的 forked stackblitz
注意:我使用 concat 是因为您的“displayedColumns”是可变的。如果这是固定的,只需在代码中添加新的列名
关于angular - 如何将带有按钮的列添加到带有循环的表格中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57507867/