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