Angular6 Ошибка при попытке использовать DecimalPipe в пользовательский канал - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь внедрить DecimalPipe в мой пользовательский канал, как описано в этом ответе .

, вот код:

@Pipe({name: 'irc'})
export class IRCurrencyPipe implements PipeTransform {

  constructor(private decimalPipe: DecimalPipe) {}

  transform(value: string | number, type: string = 'rial') {
    value = Number(value);
   if (isNaN(value)) { throw new Error(`${value} is not a acceptable number`); }
    return this.decimalPipe.transform(value, '1.0-0') + ' ریال';
  }
}

Но я получаюTypeError: Cannot read property 'transform' of undefined ошибка при запуске тестов из этого кода.

Я также попытался расширить DecimalPipe, как предложено в этом ответе :

@Pipe({name: 'irc'})
export class IRCurrencyPipe extends DecimalPipe implements PipeTransform {


  transform(value: string | number, type: string = 'rial') {
    value = Number(value);
    if (isNaN(value)) { throw new Error(`${value} is not a acceptable number`); }
    return super.transform(value, '1.0-0') + ' ریال';
  }
}

Но я получаю:Error: InvalidPipeArgument: 'Cannot read property 'toLowerCase' of undefined' for pipe 'DecimalPipe' в этом случае.Есть ли рабочее решение для использования одной из встроенных труб под углом к ​​заказной трубе?

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Это происходит, когда у вас не установлено LOCALE_ID.Вы можете установить его так:

import { LOCALE_ID, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { AppComponent } from '../src/app/app.component';

@NgModule({
  imports: [ BrowserModule ],
  declarations: [ AppComponent ],
  providers: [ { provide: LOCALE_ID, useValue: 'fr' } ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

См. полные документы здесь

0 голосов
/ 18 октября 2018

Я пытался, и я получаю результат.Смотреть код

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

@Pipe({name: 'currency'})
export class CurrencyPipe extends DecimalPipe implements PipeTransform {
    transform(value: string | number, type: string = 'rial') {
        value = Number(value);
        if (isNaN(value)) { throw new Error(`${value} is not a acceptable number`); }
        return super.transform(value, '1.0-0') + ' ریال';
    }
}
...