在Angular Material Table中使用过滤器时如何排除undefined和null?

How to exclude undefined and null when use filter in Angular Material Table?

请帮忙。有什么办法可以从过滤中排除 undefined 和 null 吗?因此,如果单元格值为 null 或未定义,则当用户在搜索输入中键入 "null" 或 "undefined" 时不会显示它。

传入 table 数据:

dataSource: MatTableDataSource

以下方法应用于输入:

  applyFilter(filterValue: string) {
    this.dataSource.filter = filterValue.trim().toLowerCase();
  }

我猜你正在寻找:

 applyFilter(filterValue: string) {

    if (!!filterValue) {
       this.dataSource.filter = filterValue.trim().toLowerCase();
    }

 }

我找到了答案,万一有人在找呢。

  applyFilter(filterValue: string) {
    this.dataSource.data.forEach(element => {
      for (const key in element) {
        if (!element[key] || element[key] === null) {
          element[key] = '';
        }
      }
    });
    this.dataSource.filter = filterValue.trim().toLowerCase();
  }

applyFilter() 函数被添加到输入中,它以输入值作为参数。在过滤时,您需要检查对象的传入数据数组(它将是您在 Material Table 中的行),并针对每个对象 属性 检查它是否为空或未定义。如果是 - 分配空字符串。然后这个空字符串将通过 material 与其他值连接在一起进行过滤。