Javascript 如何传递有关如何使用Angular2在管道中过滤的元数据?
考虑以下几点 这是我的组件Javascript 如何传递有关如何使用Angular2在管道中过滤的元数据?,javascript,typescript,angular,Javascript,Typescript,Angular,考虑以下几点 这是我的组件 @Component({ selector: 'myInput', pipes: [myPipe], template: ` <input [(ngModel)]="searchText" placeholder="name"> <li *ngFor="#item of items | searchByTitle: searchText"> <div>{{item.title}}<
@Component({
selector: 'myInput',
pipes: [myPipe],
template:
`
<input [(ngModel)]="searchText" placeholder="name">
<li *ngFor="#item of items | searchByTitle: searchText">
<div>{{item.title}}</div>
</li>
`,
})
从上面的代码可以看出,我们正在使用用户输入的searchText
过滤列表,searchText
是标题的过滤标准
但是如果我有以下数据
items = [{'myTitle': 'title1'}, {'myTitle': 'title2'}]
它不起作用,我只能传入包含键title
的数据,有没有办法传入任意键进行筛选
这样我才能做到
return value.filter(item => item[myArbiraryKey].indexOf(args[0]) !== -1);
可以为管道提供多个参数:
@Pipe({
name: "searchByTitle"
})
export class myPipe {
transform(value, args: any[]) {
var field = args[0];
return value.filter(item => item[field].indexOf(args[1]) !== -1);
}
}
并以这种方式使用它:
<li *ngFor="#item of items | searchByTitle:title:searchText">
<div>{{item.title}}</div>
</li>
{{item.title}
<li *ngFor="#item of items | searchByTitle:title:searchText">
<div>{{item.title}}</div>
</li>