使用 fr Locale 转换 Decimal
Casting Decimal with fr Locale
我扩展了 DecimalPipe
并将其用于 fr
语言环境。
import { DecimalPipe, registerLocaleData } from '@angular/common';
import { Pipe, PipeTransform } from '@angular/core';
import localeFr from '@angular/common/locales/fr';
@Pipe({
name: 'myDecimalPipe'
})
export class MyDecimalPipe extends DecimalPipe implements PipeTransform
{
transform(value: any, args?: any) : any {
let result;
registerLocaleData(localeFr);
result = super.transform(value, args, 'fr');
return result;
}
}
最初,当模型绑定时,它会根据格式直观地显示十进制值。
例如23.00
显示为 23,00
但在编辑时和分配回来时它抛出错误
core.js:6185 ERROR Error: InvalidPipeArgument: '23,23 is not a number'
for pipe 'DecimalPipe'
用法:
constructor(private decimalPipe: MyDecimalPipe){}
update()
{
this.decimalPipe.transform(model.value) //model.value is 23,23
}
这可能是什么问题?
for e.g. 23.00 is displayed as 23,00. but on editing and when it assigns
back it is throwing the error
换句话说,当您通过字符串插值使用 DecimalPipe
时:{{23.03 | myDecimalPipe}}
它有效并打印 23,03
,为什么?因为 23.03
值是通过此 angular 方法的有效数字:
function strToNumber(value) {
// Convert strings to numbers
if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {
return Number(value);
}
if (typeof value !== 'number') {
throw new Error(value + " is not a number");
}
return value;
}
当您以编程方式调用 transform
方法时,您必须使用有效数字。
console.log(this.decimalPipe.transform("32.23")); // Will print 32,23
console.log(this.decimalPipe.transform("32,23")); // Throws error
要解决此问题,您只需使用以下方法将字符串 "32,23"
转换为有效数字:
update()
{
this.decimalPipe.transform(Number(model.value.replace(',', '.'));
}
我扩展了 DecimalPipe
并将其用于 fr
语言环境。
import { DecimalPipe, registerLocaleData } from '@angular/common';
import { Pipe, PipeTransform } from '@angular/core';
import localeFr from '@angular/common/locales/fr';
@Pipe({
name: 'myDecimalPipe'
})
export class MyDecimalPipe extends DecimalPipe implements PipeTransform
{
transform(value: any, args?: any) : any {
let result;
registerLocaleData(localeFr);
result = super.transform(value, args, 'fr');
return result;
}
}
最初,当模型绑定时,它会根据格式直观地显示十进制值。
例如23.00
显示为 23,00
但在编辑时和分配回来时它抛出错误
core.js:6185 ERROR Error: InvalidPipeArgument: '23,23 is not a number' for pipe 'DecimalPipe'
用法:
constructor(private decimalPipe: MyDecimalPipe){}
update()
{
this.decimalPipe.transform(model.value) //model.value is 23,23
}
这可能是什么问题?
for e.g. 23.00 is displayed as 23,00. but on editing and when it assigns back it is throwing the error
换句话说,当您通过字符串插值使用 DecimalPipe
时:{{23.03 | myDecimalPipe}}
它有效并打印 23,03
,为什么?因为 23.03
值是通过此 angular 方法的有效数字:
function strToNumber(value) {
// Convert strings to numbers
if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {
return Number(value);
}
if (typeof value !== 'number') {
throw new Error(value + " is not a number");
}
return value;
}
当您以编程方式调用 transform
方法时,您必须使用有效数字。
console.log(this.decimalPipe.transform("32.23")); // Will print 32,23
console.log(this.decimalPipe.transform("32,23")); // Throws error
要解决此问题,您只需使用以下方法将字符串 "32,23"
转换为有效数字:
update()
{
this.decimalPipe.transform(Number(model.value.replace(',', '.'));
}