gpt4 book ai didi

angular - 在 Angular 2 中的对象的所有属性中搜索字符串

转载 作者:太空狗 更新时间:2023-10-29 17:06:44 24 4
gpt4 key购买 nike

如何使用 TS 在 Angular 2 中的对象的所有属性中搜索字符串。

我在带有搜索框的表格中呈现了一组客户,如果用户键入一个值,我想搜索所有属性值以推送与键入的值匹配的客户。

export var CUSTOMER: Client[] = [
{ id: 1, name: 'John', phone: '888-888-888'},
{ id: 2, name: 'Nick', phone: '555-888-888'},
{ id: 3, name: 'Mike', phone: '666-888-888'},
];

过滤管

import {Pipe, PipeTransform, Injectable} from "@angular/core";

@Pipe({
name: 'filter',
pure: false
})
@Injectable()
export class Ng2SearchPipe implements PipeTransform {

transform(items: any, term: any): any {
if (term === undefined) {
return items;
}

return items.filter(function(item){
return item.name.toLowerCase().includes(term.toLowerCase());
});
}
}

在上面的过滤器管道中,我只能按名称搜索。我不确定如何处理这个问题。我是否应该为 Customer 对象创建一个方法来返回所有串联的属性值,然后在这个串联值上搜索术语?

最佳答案

您需要应用空检查并使用 .toString() 否则如果值为数字,它将无法使用 toLowerCase() 方法并会引发错误.

return items.filter(item =>
Object.keys(item).some(
k =>
item[k] != null &&
item[k]
.toString()
.toLowerCase()
.includes(term.toLowerCase())
)
);

关于angular - 在 Angular 2 中的对象的所有属性中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41901643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com