Angularjs 如何在angular2中对列表应用搜索筛选器?
我想对存储在数组中的数据列表实现搜索过滤器,我想应用搜索过滤器,就像在数据表中搜索一样。如下图所示。 但在这方面(姓名、地址等)是不固定的 我怎样才能做到这一点呢? 如果要按其他字段过滤,只需将它们添加到管道中:Angularjs 如何在angular2中对列表应用搜索筛选器?,angularjs,angular,typescript,Angularjs,Angular,Typescript,我想对存储在数组中的数据列表实现搜索过滤器,我想应用搜索过滤器,就像在数据表中搜索一样。如下图所示。 但在这方面(姓名、地址等)是不固定的 我怎样才能做到这一点呢? 如果要按其他字段过滤,只需将它们添加到管道中: import { Pipe,PipeTransform} from '@angular/core'; @Pipe({ name: 'searchFilter' }) export class SearchFilter implements PipeTransform {
import { Pipe,PipeTransform} from '@angular/core';
@Pipe({
name: 'searchFilter'
})
export class SearchFilter implements PipeTransform {
transform(items: any[], criteria: any): any {
return items.filter(item =>{
for (let key in item ) {
if((""+item[key]).toLocaleLowerCase().includes(criteria.toLocaleLowerCase())){
return true;
}
}
return false;
});
}
}
@Component({
selector: 'sites-component',
template: `
<input #search (keyup)="0">
<ul>
<li *ngFor="let site of (sites | searchFilter: search.value )">(...)</li>
</ul>
`
})
export class SitesComponent{
sites : Array;
}
从'@angular/core'导入{Pipe,PipeTransform};
@烟斗({
名称:'searchFilter'
})
导出类SearchFilter实现PipeTransform{
转换(项:任意[],条件:任意):任意{
返回项目。筛选器(项目=>{
用于(让输入项){
if((“”+项[key]).toLocaleLowerCase()包括(criteria.toLocaleLowerCase()){
返回true;
}
}
返回false;
});
}
}
@组成部分({
选择器:'站点组件',
模板:`
- (…)
`
})
导出类站点组件{
地点:阵列;
}
别忘了在模块中声明管道。我认为此管道只允许按“名称”进行筛选但我也希望允许按地址或联系人号等进行筛选。@VedTest ok Wait谢谢您的快速帮助,但正如我在问题中提到的,这些字段不是固定的,它们将根据用户节进行动态更改。@BougarfaouiElhoucine我得到的PipeTransform没有定义,虽然我在主模块和组件中都导入了模块。您能帮忙吗?criteria保存着
search的值。值
传递到管道中。如果您愿意,您可以更改其名称。而包括
是一个javascript函数,请参见此处: