我有一个材料表,并显示一个用户,该用户具有字符串,数字和嵌套对象的值。下一步,我尝试过滤此对象的每一列。但是,当我尝试不过滤字符串或数字值时,而是使用整个对象,因此此特定列的过滤器始终返回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时,因为它会过滤整个地址对象,因此不会返回任何行。我想以动态模式使用它,以便将表也重用于其他对象。