如何用多个参数调用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' }}