如何在嵌套对象的角度材质过滤中调整filterPredicate?

时间:2019-07-24 18:27:01

标签: angular typescript angular-material

我有一个材料表,并显示一个用户,该用户具有字符串,数字和嵌套对象的值。下一步,我尝试过滤此对象的每一列。但是,当我尝试不过滤字符串或数字值时,而是使用整个对象,因此此特定列的过滤器始终返回false。无论值如何,我该怎么做才能正确过滤所有列?

 displayColumns = {name, surname, address: {number, street}};

对于给定对象的动态表列,我具有以下过滤谓词,但是当该对象具有嵌套对象时,就会出现问题。

 this.dataSource.filterPredicate = (inputData, filter: string) => {
   let serachString = JSON.parse(filter);

   function containFilteredValue() {
           return function (column) {
              return ((inputData[column] && inputData[column].toString().trim().toLowerCase() || '').indexOf(searchString[column].toLowerCase()) !== -1);
         }; 
  }

  return this.displayColumns.every(containFilteredValue());
  };
}

当我输入名称过滤器“ bi”时,它将返回名称中带有bill的行。但是,当我在number栏中输入5时,因为它会过滤整个地址对象,因此不会返回任何行。我想以动态模式使用它,以便将表也重用于其他对象。

0 个答案:

没有答案