数据filter.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'dataFilter'
})
export class DataFilterPipe implements PipeTransform {
transform(array: any[], query: string): any {
if (!query || query === '') {
return array;
}
let filtered = [];
array.forEach(function (element) {
let isAdded = false;
Object.keys(element).forEach(function (key, index) {
if (!isAdded && element[key].toString().toLowerCase().includes(query.toLowerCase())) {
filtered.push(element);
isAdded = true;
}
});
});
return filtered;
}
}
in .html
<table class="bordered table-bordered" [mfData]="users | dataFilter : filterQuery" #mf="mfDataTable"
答案 0 :(得分:1)
表示某个键element[key]
的值为undefined
。您需要再为 truthy
!isAdded && element[key] && element[key].toString()...
// ---------^^^^^^^^^^^^---------------------------
答案 1 :(得分:0)
我在代码中看到的两件事:
1-每当您通过对象键时,请确保您正在测试
使用hasOwnProperty
2-您在发布的代码中只有一个toString()
用法,并且来自
错误,您确切知道它是什么,无法在undefined
上调用该函数
因此element[key]
未定义。
请注意,密钥存在但值不存在,您可以通过多种方式解决此问题,
像@sauren建议的那样,你可以在if语句中添加它,或者确保你
在调用函数之前将其设置为空字符串,或者不管你是什么
觉得合适。
但是这个想法是一样的,在使用它来调用函数之前,请确保该值未定义。