5.4 定制管道 - RLwu/angular-start GitHub Wiki
定制管道
Angular2预置的管道并不是特别丰富,不过好在很容易自己实现一个管道。
1.声明元数据
和实现一个组件类似,一个管道也是具有特定元数据的类:
@Pipe({name:'ezp'})
class EzPipe{...}
Pipe注解为被装饰的类附加了管道元数据,其最重要的属性是name,也就是 我们在模板中调用这个管道时使用的名称。上面定义的管道,我们可以在模板中 这样使用:{{ data | ezp }}。
2.实现transform方法
管道必须实现一个预定的方法transform(input,args),这个方法的input 参数代表输入数据,args参数代表输入参数,返回值将被作为管道的输出。
下面的示例简单地将输入数据与所有参数拼接在一起:
@Pipe({name:'ezp'})
class EzPipe{
transform(input,args){
return input + " " +args.join(" ");
}
}
3.使用自定义管道
在组件的模板中使用自定义管道之前,需要预先声明一下,以便Angular2注入。 使用Component注解的pipes属性进行声明:pipes:[EzPipe]。
现在,我们就可以使用这个自定义管道了:
<!--结果:"call join mary linda"-->
{{ "call " | ezp:'john':'mary':'linda' }}