2016-11-25 52 views
2

我有一个关于angular2管道的问题。 我想根据schema:string来获取管道作为返回值。 我觉得2种方式来获得它,但都没有工作。我可以返回内置管道吗?

page.html中

<p>{{value | getSchema(value, schema)}}</p> 

page.ts

getSchema(value, schema){ 
    if(schema == 'Currency'){ 
     return "currency: 'USD':true"; 
    } else if(schema == 'Number'){ 
     return 'number'; 
    } 
} 

page.html中

<p>{{getSchema(value, schema)}}</p> 

page.ts

getSchema(value, schema){ 
    if(schema == 'Currency'){ 
     return value + "| currency: 'USD':true"; 
    } else if(schema == 'Number'){ 
     return value + '| number'; 
    } 
} 

有什么想法? 谢谢。

+0

为什么不把开关逻辑接受参数,而不是管内的另一个管道自定义管?它会更清晰,并且可能不像表现明智一样糟糕。 – masimplo

回答

2

您可以使用调用取决于参数

@Pipe({name: 'genericPipe'}) 
class MyPipe { 
    constructor(private currPipe:CurrencyPipe, private numberPipe:NumberPipe) {} 
    transform(value, schema) { 
    if(schema == 'Currency') { 
     return this.currPipe.transform(value); 
    } else { 
     return this.numberPipe.transform(value); 
    } 
    } 
} 
​​
相关问题