首页 > 解决方案 > 当数据源中的整列为空时,如何隐藏 Angular Material 表中的列?

问题描述

我有一个 Angular Material 表,其中包含以下列: tablecolumns: string[] = ["mbrID", "E", "B", "HasAccess", "Att", "select"];

我收到的信息有两种。类型 A 已填满所有列。对于类型 B,列 E 和 B 将始终为空。从我从填充数据源的服务获得的响应中,我无法确定信息是 A 类型还是 B 类型。如何检查数据源中这些特定列的值是否为 null 并隐藏他们在展示?

这是我用于填充数据源的 Angular 代码。

ngOnInit() {
    this.Service.ObservableName.subscribe(
      (response: Recipient[]) => {
        this.RcptData = response;
        console.log(this.RcptData);
        this.tabledata = new MatTableDataSource(response);
      }
    )
  }

Recipient 界面如下所示:

export interface Recipient {
    mbrId: string,
    E: string,
    B: string,
    hasAccess: string,
    att: string[]
}

这就是我在表格的 HTML 代码中的内容。我只添加了两列,但其余列类似。:

<table mat-table matSort [dataSource]='RcptData' class="mat-elevation-z8">
  <ng-container matColumnDef="mbrID">
    <th mat-header-cell *matHeaderCellDef>Member ID</th>
    <td mat-cell *matCellDef="let member"> {{member.mbrId}}</td>
  </ng-container>
  <ng-container matColumnDef="E">
    <th mat-header-cell *matHeaderCellDef>E</th>
    <td mat-cell *matCellDef="let member"> {{member.E}}</td>
  </ng-container>
  <tr mat-header-row *matHeaderRowDef="tablecolumns"></tr>
  <tr mat-row *matRowDef="let row;columns: tablecolumns;"></tr>

</table>

现在,无论数据类型如何,列 E 和 B 都将可见,但我想隐藏它。由于我没有从后端服务获得什么类型的数据,所以我不知道该怎么做。对于类型 B,列 E 和 B 的值将始终为空(整列)。我可以用它来隐藏列吗?

标签: angularangular-material

解决方案


推荐阅读