angular 2 中的搜索框不是 return 整个对象
searchbox in angular 2 doesn't return the whole object
我是 Angular2 和 4 的新手。
我有一个 class(项目)类型的项目列表。
项目字段是名称、价格和描述。
我想制作一个搜索框,当用户键入项目名称时,它会显示正确的项目对象。
我遵循了这个例子:http://www.angulartutorial.net/2017/03/simple-search-using-pipe-in-angular-2.html
但它没有用,我想是因为如果是在字符串之间搜索而不是在类型为 item 的对象之间搜索。
如果您使用教程中的代码,使用对象数组,您只需更新 Angular2 管道中转换方法的 return 语句,如下所示:
return value.filter(function (el: any) {
return el.name.toLowerCase().indexOf(input) > -1;
})
PS:我添加了el.name,但您可以搜索描述或任何您喜欢的内容。
创建自定义管道并将搜索参数传递给该管道,如下例所示
<li *ngFor="let n of list | FilterPipe: queryString : searchableList ">
{{n.name}} ({{n.age}})
</li>
this.searchableList = ['name','age']
还有你的定制烟斗
@Pipe({
name: 'FilterPipe',
})
export class FilterPipe implements PipeTransform {
transform(value: any, input: string,searchableList : any) {
if (input) {
input = input.toLowerCase();
return value.filter(function (el: any) {
var isTrue = false;
for(var k in searchableList ){
if(el[searchableList[k]].toLowerCase().indexOf(input) > -1){
isTrue = true;
}
if(isTrue){
return el
}
}
})
}
return value;
}
}
我是 Angular2 和 4 的新手。 我有一个 class(项目)类型的项目列表。 项目字段是名称、价格和描述。 我想制作一个搜索框,当用户键入项目名称时,它会显示正确的项目对象。
我遵循了这个例子:http://www.angulartutorial.net/2017/03/simple-search-using-pipe-in-angular-2.html 但它没有用,我想是因为如果是在字符串之间搜索而不是在类型为 item 的对象之间搜索。
如果您使用教程中的代码,使用对象数组,您只需更新 Angular2 管道中转换方法的 return 语句,如下所示:
return value.filter(function (el: any) {
return el.name.toLowerCase().indexOf(input) > -1;
})
PS:我添加了el.name,但您可以搜索描述或任何您喜欢的内容。
创建自定义管道并将搜索参数传递给该管道,如下例所示
<li *ngFor="let n of list | FilterPipe: queryString : searchableList ">
{{n.name}} ({{n.age}})
</li>
this.searchableList = ['name','age']
还有你的定制烟斗
@Pipe({
name: 'FilterPipe',
})
export class FilterPipe implements PipeTransform {
transform(value: any, input: string,searchableList : any) {
if (input) {
input = input.toLowerCase();
return value.filter(function (el: any) {
var isTrue = false;
for(var k in searchableList ){
if(el[searchableList[k]].toLowerCase().indexOf(input) > -1){
isTrue = true;
}
if(isTrue){
return el
}
}
})
}
return value;
}
}