Búsqueda de sitios web

angular - extender un pipe como currency o number en un pipe personalizado en angular2


Me gustaría llamar al numberPipe en mi pipe personalizado. Encuentro esta respuesta.

Angular2 usar pipe básico en pipe personalizado

pero esta solución no funciona para mí. Tengo un error "No se pudo encontrar el pipe 'bigInteger'"

import { Pipe, PipeTransform } from "@angular/core"
import { CurrencyPipe  } from "@angular/common"

@Pipe({
 name: "bigInteger"
 })
 export class BigInteger extends CurrencyPipe implements PipeTransform {
   transform(value: any): string {
    return value
 }
}

Respuesta #1

Tal vez esté obsoleto, pero esto funcionó para mí (Angular 5):

import { Pipe, PipeTransform } from '@angular/core';
import { DecimalPipe } from '@angular/common'

@Pipe({
  name: 'bigInteger'
})
export class BigInteger extends DecimalPipe implements PipeTransform {
  transform(value: any, args?: any): any {

    let result;
    result = super.transform(value, args);

    //any transformations you need

    return result;
  }

}

Luego simplemente lo usas como un pipe de números normal, pero puedes personalizarlo como desees:

<span>{{someValue | bigInteger : '1.2-2'}}</span>

Respuesta #2

actualizar

esto debería haberse arreglado desde hace tiempo al menos en Angular4

original

Hay un problema conocido con la inyección de dependencias y las clases que extienden a otras clases

https://github.com/angular/angular/issues/8694

Hasta que esto se arregle, puedes usar composición en lugar de herencia:

@Pipe({
  name: "bigInteger"
})
export class BigInteger implements PipeTransform {

  constructor(private currencyPipe:CurrencyPipe) {}

  transform(value: any): string {
     return this.currencyPipe.transform(value);
  }
}

Artículos relacionados