angular-material - 如何显示和隐藏特定的列?
问题描述
我有mat-table
一个mat-menu
:
<mat-menu #menu="matMenu">
<button mat-menu-item>
<mat-icon>notifications_off</mat-icon>
<span>Index</span>
</button>
<button mat-menu-item>
<mat-icon>voicemail</mat-icon>
<span>Created At</span>
</button>
</mat-menu>
<table mat-table [dataSource]="dataSource">
<ng-container matColumnDef="index">
<th mat-header-cell *matHeaderCellDef> Index </th>
<td mat-cell *matCellDef="let vms"> {{vms.index}} </td>
</ng-container>
<ng-container matColumnDef="createdAt">
<th mat-header-cell *matHeaderCellDef> Created At </th>
<td mat-cell *matCellDef="let vms">{{vms.vm_created_at}}</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table>
我还有一个显示列表的菜单,displayedCloumns
当我单击菜单时,我试图显示和隐藏列。例如index
或createdAt
component
displayedColumns = ['index', 'createdAt'];
dataSource;
Angular 材料文档中的示例解释、显示和隐藏随机列并使用slice
and push
。
我正在尝试单击特定列show
。hide
有没有办法让它工作?
解决方案
我确信有几种方法可以做到这一点,但我看到的一种方法是让每个菜单项的单击事件将关联的列名传递给执行列隐藏或显示的函数。下面的示例没有对列进行排序(因为使用splice
和push
,列隐藏/显示总是发生在表的最后一列),但是添加额外的逻辑来维护特定的顺序不应该有太大的变化。
推荐阅读
- python - 如何在python中将dec转换为hex?
- android - 在 kotlin 中获取 mapbox 的位置权限失败
- python - 如何从列表中删除并排存在于另一个列表中的项目?
- java - 生成具有唯一名称的文件并将数据写入其中
- android - 使用改造从服务器获取数据后如何将数据存储在房间数据库中
- ios - iOS xcode 11 新项目多个错误
- d3.js - 为什么附加的 svg 没有定位在 0,0?
- python - 在 Firebase 托管中使用 Python Google Cloud 函数
- android - Android ListView 样式 - 资源定义中的循环
- git - IntelliJ Git GUI 中的“git clean”命令