angular - 如何将带有按钮的列添加到带有循环的表格中?

标签 angular angular-material

如何在表格中添加带有按钮的列?

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/

相关文章:

html - 如何使用角 Material 表添加多个标题行

angular - 如何为垫子凸起的按钮添加边框?

Angular 嵌套路由器 socket 子项在路由器动画完成之前消失

html - Angular Heroes 教程 <app-heroes> css 选择器

css - Owl Carousel 在末端创造了额外的空间

angular - 在 Angular Material 中使用两种不同的字体

使用 NgRx store 进行 Angular 内存优化以避免内存泄漏

node.js - 请求 session 不持久 - Express-Session

angularjs - $mdDialog 堆叠/嵌套对话框,可能吗?

angular - 如何防止 Accordion 组件关闭?