angular-material - 如何显示和隐藏特定列?

标签 angular-material angular-material2

我有一个 mat-tablemat-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列表的菜单,我试图在单击菜单时显示和隐藏列。例如indexcreatedAt

组件

displayedColumns = ['index', 'createdAt'];
dataSource;

Angular Material 文档中的示例解释、显示和隐藏随机列并使用 slicepush

我正在尝试在点击时显示隐藏特定列。

有办法让它发挥作用吗?

最佳答案

我确信有多种方法可以做到这一点,但我看到的一种方法是让每个菜单项的单击事件将关联的列名称传递给执行列隐藏或显示的函数。下面的示例没有对列进行排序(因为使用了 splicepush,列隐藏/显示总是发生在表的最后一列),但添加了额外的逻辑维持特定的顺序不应该有太大的改变。

StackBlitz example

关于angular-material - 如何显示和隐藏特定列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51743345/

相关文章:

html - 如何设置 Angular Material 中列的大小?

Angular 2 - 动态更新自定义 MAT_DATE_FORMATS

angular - 如何防止点击显示垫菜单?

json - 无法将数据绑定(bind)到 Angular Material 数据表

angular - 在Mat-Dialog(Angular Material CDK)上拖放无效。先前和当前索引有误

Angular 4 模板引用变量

angular - “md-card”不是 Material 2 中的已知元素

css - 使用 Angular 中的 Angular Material/Flex-Layout 创建具有固定标题、固定侧边栏、固定内容部分的布局

angular - ngModel 无法在表单标签内工作

angularjs - 有没有办法使用#mdDialog 服务触发 mat-dialog 组件?