我知道我可以像这样调用一个管道:
{{ myData | date:'fullDate' }}
这里date管道只接受一个参数。 从组件的模板HTML和直接在代码中调用具有更多参数的管道的语法是什么?
我知道我可以像这样调用一个管道:
{{ myData | date:'fullDate' }}
这里date管道只接受一个参数。 从组件的模板HTML和直接在代码中调用具有更多参数的管道的语法是什么?
当前回答
你没有看到真正的管子。
{{ myData | date:'fullDate' }}
多个参数可以用“:”分隔。
{{ myData | myPipe:'arg1':'arg2':'arg3' }}
你也可以像这样连接管道:
{{ myData | date:'fullDate' | myPipe:'arg1':'arg2':'arg3' }}
其他回答
你没有看到真正的管子。
{{ myData | date:'fullDate' }}
多个参数可以用“:”分隔。
{{ myData | myPipe:'arg1':'arg2':'arg3' }}
你也可以像这样连接管道:
{{ myData | date:'fullDate' | myPipe:'arg1':'arg2':'arg3' }}
在你的组件模板中,你可以使用多个参数,用冒号分隔:
{{ myData | myPipe: 'arg1':'arg2':'arg3'... }}
在你的代码中,它看起来是这样的:
new MyPipe().transform(myData, arg1, arg2, arg3)
在你管道中的transform函数中,你可以像这样使用参数:
export class MyPipe implements PipeTransform {
// specify every argument individually
transform(value: any, arg1: any, arg2: any, arg3: any): any { }
// or use a rest parameter
transform(value: any, ...args: any[]): any { }
}
Beta 16及之前版本(2016-04-26)
管道接受一个包含所有参数的数组,所以你需要像这样调用它们:
new MyPipe().transform(myData, [arg1, arg2, arg3...])
你的变换函数是这样的
export class MyPipe implements PipeTransform {
transform(value:any, args:any[]):any {
var arg1 = args[0];
var arg2 = args[1];
...
}
}
另外,伙计们,如果您像我一样遇到解析器错误,请记住管道名称不应该包含破折号。
@Pipe({ name: 'arrayFilter' }) // I had 'array-filter'
export class ArrayFilterPipe implements PipeTransform {
public transform(items: any[], value: string, props: string[]) { ... }
}
解析: *ngFor="让工作流| ***array-filter***: workflowFilter:['Name'];trackBy: trackWorkflow”
解析: *ngFor="let workflow of workflows | ***arrayFilter***: workflowFilter:['Name'];trackBy: trackWorkflow”
因为β。参数不再作为数组传递给transform()方法,而是作为单独的参数:
{{ myData | date:'fullDate':'arg1':'arg2' }}
export class DatePipe implements PipeTransform {
transform(value:any, arg1:any, arg2:any):any {
...
}
https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta16-2016-04-26
管道现在接受可变数量的参数,而不是一个包含所有参数的数组。
从:user3777549扩展
一组数据上的多值过滤器(仅参考标题键)
HTML
<div *ngFor='let item of items | filtermulti: [{title:["mr","ms"]},{first:["john"]}]' >
Hello {{item.first}} !
</div>
filterMultiple
args.forEach(function (filterobj) {
console.log(filterobj)
let filterkey = Object.keys(filterobj)[0];
let filtervalue = filterobj[filterkey];
myobjects.forEach(function (objectToFilter) {
if (!filtervalue.some(x=>x==objectToFilter[filterkey]) && filtervalue != "") {
// object didn't match a filter value so remove it from array via filter
returnobjects = returnobjects.filter(obj => obj !== objectToFilter);
}
})
});