如何用多个参数调用Angular 2pipe道?
我知道我可以像这样调用pipe道:
{{ myData | date:'fullDate' }}
这里datepipe道只有一个参数。 从组件的模板HTML直接在代码中调用具有更多参数的pipe道的语法是什么?
在你的组件的模板中,你可以通过用冒号分隔它们来使用多个参数:
{{ myData | myPipe: 'arg1':'arg2':'arg3'... }}
从你的代码看起来像这样:
new MyPipe().transform(myData, arg1, arg2, arg3)
而在你的pipe道内的转换函数,你可以使用这样的参数:
export class MyPipe implements PipeTransform { transform(value:any, arg1:any, arg2:any, arg3:any):any { }
Beta 16之前(2016-04-26)
pipe道需要一个包含所有参数的数组,所以你需要像这样调用它们:
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]; ... }
自beta.16以来,参数不再作为数组传递给transform()
方法,而是作为单独的parameter passing:
{{ 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
pipe道现在需要可变数量的参数,而不是包含所有参数的数组。
你错过了实际的pipe道。
{{ myData | date:'fullDate' }}
多个参数可以用分号分隔。
{{ myData | myPipe:'arg1':'arg2':'arg3' }}
你也可以连锁pipe道,就像这样:
{{ myData | date:'fullDate' | myPipe:'arg1':'arg2':'arg3' }}