Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular6尝试将DecimalPipe用于自定义管道时出错_Angular_Angular Pipe_Angular2 Custom Pipes - Fatal编程技术网

Angular6尝试将DecimalPipe用于自定义管道时出错

Angular6尝试将DecimalPipe用于自定义管道时出错,angular,angular-pipe,angular2-custom-pipes,Angular,Angular Pipe,Angular2 Custom Pipes,我正在尝试将DecimalPipe注入到我的自定义管道中,如本文所述 代码如下: @Pipe({name: 'irc'}) export class IRCurrencyPipe implements PipeTransform { constructor(private decimalPipe: DecimalPipe) {} transform(value: string | number, type: string = 'rial') { value = Number(

我正在尝试将
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:当从该代码运行测试时,无法读取未定义的
错误的属性“transform”

我还尝试按照中的建议扩展
DecimalPipe
:

但我得到:
Error:InvalidPipeArgument:“在这种情况下,无法读取管道'DecimalPipe'的未定义'toLowerCase'属性”

是否有一种可行的解决方案,可以将其中一个内置管道与自定义管道成一定角度使用?

我尝试过,并得到了结果。参见代码

从'@angular/common'导入{DecimalPipe};
从“@angular/core”导入{Pipe,PipeTransform};
@管道({name:'currency'})
导出类CurrencyPipe扩展DecimalPipe实现PipeTransform{
转换(值:string | number,类型:string='rial'){
值=数字(值);
如果(isNaN(value)){抛出新错误(`${value}不是可接受的数字`);}
返回super.transform(值'1.0-0')+'cfیال';
}

}
当您没有设置
LOCALE\u ID
时,会发生这种情况。 您可以这样设置:

从'@angular/core'导入{LOCALE_ID,NgModule};
从“@angular/platform browser”导入{BrowserModule};
从“../src/app/app.component”导入{AppComponent};
@NGD模块({
导入:[BrowserModule],
声明:[AppComponent],
提供程序:[{provide:LOCALE_ID,useValue:'fr'}],
引导:[AppComponent]
})
导出类AppModule{}

请参见单元测试中的,您需要注册任何非默认语言环境(除了提供
locale\u ID
):


请参见

谢谢,但这是我尝试的代码。问题是,只有当我使用
en-US
输入到构造函数时,它才起作用。但是如果我必须这样做的话,我想使用
fa
值。你能创建一个Stackblitz并分享它吗?谢谢,但我以前已经将它添加到提供商中,它对我没有帮助。你找到过这个问题的答案吗?我遇到了同样的问题,我做了别的事。您可以看到代码。
@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') + ' ریال';
  }
}
import localeFr from '@angular/common/locales/fr';

beforeEach(() => {
  registerLocaleData(localeFr);
});