Angular2 use basic pipe in custom pipe

前端 未结 3 1507
轮回少年
轮回少年 2020-12-06 05:24

I\'d like to add some additional functionality to the basic angular2 pipes.

ie. some extra formatting done on the currency pipe. To do that I\'d like to use the exis

相关标签:
3条回答
  • 2020-12-06 05:28

    You can extend CurrencyPipe, something like this:

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

    If you look at the source, that's similar to how angular pipes work...


    (Added by question author)

    Don't forget to import the CurrencyPipe Class

    import {CurrencyPipe} from 'angular2/common'; 
    
    0 讨论(0)
  • 2020-12-06 05:43

    You can use Angular pipes in your custom pipe.

    First, in your pipe file, you must import desired pipe eg.

    import { SlicePipe } from '@angular/common';
    

    And then use it in your custom pipe:

      transform(list: any, end: number, active: boolean = true): any {
    return active ? new SlicePipe().transform(list, 0, end) : list;
    

    }

    Tested on A6.

    0 讨论(0)
  • 2020-12-06 05:54

    Alternatively, you can inject the 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);
        }
    }
    
    0 讨论(0)
提交回复
热议问题