在Angular2中,我在下面有一个文本过滤器管道。而不是修复" title",是否可以传入数据被过滤的属性名称?
import {Injectable, Pipe,PipeTransform} from 'angular2/core';
@Pipe({
name: 'textfilter'
})
@Injectable()
export class TextFilterPipe implements PipeTransform {
transform(items: any[], args: any[]): any {
return items.filter(item => item.title.indexOf(args[0]) !== -1);
}
}
答案 0 :(得分:3)
RC.x版本
@Pipe({
name: 'textfilter'
})
export class TextFilterPipe implements PipeTransform {
transform(items: any[], filterProp, filterValue): any {
return items.filter(item => item.[filterProp].indexOf(filterValue) !== -1);
}
}
并像
一样使用它{{someValue | textfilter:'title':abcde}}
beta.x版
@Pipe({
name: 'textfilter'
})
export class TextFilterPipe implements PipeTransform {
transform(items: any[], args: any[]): any {
return items.filter(item => item.[args[0]].indexOf(args[1]) !== -1);
}
}
答案 1 :(得分:3)
是的,你可以使用几个参数:
@Pipe({
name: 'textfilter'
})
export class TextFilterPipe implements PipeTransform {
transform(items: any[], args: any[]): any {
var paramName = args[0];
var paramValue = args[1];
return items.filter(item => item[paramName].indexOf(paramValue) !== -1);
}
}
并以这种方式使用它:
someArray | textfilter:title:value
请注意,您不需要将@Injectable
装饰器与管道一起使用。