首页 > 解决方案 > 在 Angular 材质表中使用过滤器时如何排除 undefined 和 null?

问题描述

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

传入的表数据:

dataSource: MatTableDataSource

以下方法应用于输入:

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

标签: angularangular-material2angular-material-table

解决方案


我找到了答案,以防有人在寻找它。

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


推荐阅读