2016-11-25 51 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); 
    } 
    } 
} 
​​
相關問題