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>