2016-03-05 18 views
7

Tôi muốn thêm một số chức năng bổ sung vào các ống góc cơ bản2.Angular2 sử dụng ống cơ bản trong đường ống tùy chỉnh

tức là. một số định dạng bổ sung được thực hiện trên đường ống tiền tệ. Để làm điều đó tôi muốn sử dụng đường ống hiện có trong mã thành phần của đường ống tùy chỉnh của tôi.

Có cách nào để thực hiện điều này không?

@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; 
    } 
} 

Trả lời

14

Bạn có thể mở rộng CurrencyPipe, một cái gì đó như thế này:

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; 
    } 
} 

Nếu bạn nhìn vào source, đó là tương tự như cách ống góc làm việc ...


(Added by tác giả câu hỏi)

Đừng quên nhập lớp CurrencyPipe

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

Thnx! Tôi đã thêm dòng nhập khẩu vào câu trả lời của bạn, phải tìm kiếm để tìm ra nơi mà CurrencyPipe được nhập vào. –

9

Ngoài ra, bạn có thể tiêm các CurrencyPipe:

bootstrap(AppComponent, [CurrencyPipe]); 

Pipe:

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

Tôi cũng thích cách này. Có cách nào khác để một nhà cung cấp CurrencyPipe không? Thêm nó vào bootstrap có vẻ hơi lộn xộn một chút. Tôi đã thử các sau đây mà không thành công: @Pipe ({ tên: 'FormatCurrency', nhà cung cấp: [CurrencyPipe], ống: [CurrencyPipe] }) –

+0

Tốt câu hỏi. Tôi nghĩ bạn cũng có thể chỉ định [CurrencyPipe] làm phụ thuộc của thành phần: provider: [CurrencyPipe]. Tôi đồng ý, nó quá tệ nó không hoạt động ở cấp độ ống. – pixelbits

Các vấn đề liên quan