我有一個實現DecimalPipe變換()方法,像這樣一個簡單的自定義管角管https://plnkr.co/edit/eEfXoXdM1OakuX1TjR1N?p=preview
顯然,這是沒有太大的定製管道,因爲它實現了DecimalPipe,但是我的最終目標是讓這個管道支持更多的模式,而不是'1.2-2'。我做了一些研究,似乎每個人都使用if/else或switch語句等控制結構。我想這會是這樣的:使用多種模式
export class MyDecimalFormatPipe implements PipeTransform {
constructor(public decimalPipe: DecimalPipe) {};
transform(value: any) {
if (somevalue) {
let format = '1.2-2'
value = this.decimalPipe.transform(value, format);
}
else if (othervalue) {
let format = '1.4-4'
value = this.decimalPipe.transform(value, format);
}
...
return value
}
}
這似乎是錯誤的,「笨重」在我們添加更多的格式模式這種方法會得到相當大的。我想管道應該有一些預先設定的格式模式,將根據輸入值進行設置。人們可以爲此創建一個方法也許,像這樣:
setFormatPattern(inputPattern: string): string {
let pattern: any;
this.myPatternsArray.forEach(element => {
if (element.format === inputPattern) {
pattern = element.pattern;
}
});
return pattern;
}
我與掙扎的設計,以及這個問題的實現(代碼)。必須有一個更簡單的方法...
在這種情況下, d只需使用DecimalPipe格式即可:{{whatever | myDecimalPipe:'1.4-4'}}等等。我正在尋找一個解決方案,其中管道本身存儲了一些格式模式。 – MadCatm2
如何在使用管道時定義格式? –
怎麼樣有'私人myPatterns = [{patternA:'1.4-4'},{patternB:'1.2-2},{patternC:'1.9-9}]' – MadCatm2