2016-08-16 1 views
4

Я хотел бы назвать numberPipe на моей пользовательской трубе я нахожу этот ответудлинить трубу, как валюты или номер на настраиваемую трубе на angular2

Angular2 use basic pipe in custom 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 
} 
} 

ответ

3

обновление

это должно быть исправлено, так как некоторое время, по крайней мере в Angular4

оригинальный

Существует известная проблема с DI и классами, которые расширяют другие классы

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

Util это фиксировано вы можете использовать композицию вместо наследования:

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

    constructor(private currencyPipe:CurrencyPipe) {} 

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

в дополнение к этому, я также получаю сообщение об ошибке при использовании моей пользовательской трубы в шаблоне вида, жалуясь, что там было нет провайдера для CurrencyPipe. Поэтому, чтобы обойти эту ошибку, в моем app.module.ts я добавил ее в список поставщиков: 'providers: [..., CurrencyPipe]', и теперь моя настраиваемая труба на ее основе работает! Теперь я уверен, что это может быть не лучшая практика или что-то еще, но мне нужно будет найти разумный способ переопределить стандартные каналы или, может быть, есть лучший способ? – FireDragon

+0

также, CurrencyPipe можно найти в модуле Angular's Common 'import {CurrencyPipe} из '@ angle/common';' – FireDragon