2016-03-05 18 views
7

Temel angular2 borularına bazı ek işlevler eklemek istiyorum.Angular2 özel boruda özel boru kullanın

ie. Döviz borusunda yapılan bazı ekstra biçimlendirme. Bunu yapmak için mevcut boruyu özel borumun bileşen kodunda kullanmak istiyorum.

Bunun bir yolu var mı?

@Pipe({name: 'formatCurrency'}) 
export class FormatCurrency implements PipeTransform { 
    transform(value:number, args:string[]) : any { 
    var formatted = value/100; 

    //I would like to use the basic currecy pipe here. 
    ///100 | currency:'EUR':true:'.2' 

    return 'Do some extra things here ' + formatted; 
    } 
} 

cevap

14

Böyle bir şey CurrencyPipe uzatabilirsiniz:

export class FormatCurrency extends CurrencyPipe implements PipeTransform { 
    transform(value: any, args: any[]): string { 
    let formatedByCurrencyPipe = super.transform(value, args); 
    let formatedByMe; 
    // do your thing... 
    return formatedByMe; 
    } 
} 

Eğer source bakarsak, bu işe nasıl açısal boruları benziyor ...


(tarafından eklendi soru yazar)

CurrencyPipe Sınıfı'nı almayı unutmayın.

import {CurrencyPipe} from 'angular2/common'; 
+0

Thnx! İçe aktarma satırını cevabınıza ekledim, CurrencyPipe’nın nereden ithal edildiğini bulmak için aramak zorundaydım. –

9

Alternatif olarak, CurrencyPipe enjekte edebilir

bootstrap(AppComponent, [CurrencyPipe]); 

Boru:

@Pipe({ 
    name: 'mypipe' 
}) 
export class MyPipe { 
    constructor(private cp: CurrencyPipe) { 
    } 
    transform(value: any, args: any[]) { 
     return this.cp.transform(value, args); 
    } 
} 
+3

Ben de bu şekilde seviyorum. Bir CurrencyPipe sağlayıcısının başka bir yolu var mı? Bunu bootstrap'e eklemek biraz dağınık görünüyor. Ben başarılı olamadı aşağıdaki çalıştı: @Pipe ({ ismi: 'formatCurrency', sağlayıcıları: [CurrencyPipe], boruları: [CurrencyPipe] }) –

+0

İyi soru. Ayrıca, [CurrencyPipe] bileşenini bileşenlerin bir bağımlılığı olarak da belirtebileceğinizi düşünüyorum: sağlayıcılar: [CurrencyPipe]. Katılıyorum, çok kötü, Boru seviyesinde çalışmıyor. – pixelbits

İlgili konular