我需要以这种方式设置数字的格式:
10,00
1.000,67
1,78
(整数部分可以具有不确定的数字位数,而小数部分必须等于2)
所以假设要这样做html
<input type="number" class="form-control" [ngModel]="money| toNumber " name="money" required (ngModelChange)="money= $event"
我使用此管道:
@Pipe({
name: 'toNumber'
})
export class ToNumberPipe implements PipeTransform {
transform(value: number | string, locale?: string): string {
return new Intl.NumberFormat(locale, {
minimumFractionDigits: 2
}).format(Number(value));
}
}
我刚刚在代码的另一部分中使用了这个管道,它按照我想要的方式格式化数字,但是在这种情况下,当我将此管道放在html代码中时,输入类型数字字段为空,则会收到此消息:
指定的值“ 4,00”不是有效数字。该值必须与以下正则表达式匹配:-?(\ d + | \ d +。\ d + |。\ d +)([eE] [-+]?\ d +)?
答案 0 :(得分:0)
由于您无法使用Number()
将带分号的字符串解析为数字,因此您可以在此处执行的选择是使用parseInt()
而不是Number()
@Pipe({
name: 'toNumber'
})
export class ToNumberPipe implements PipeTransform {
transform(value: number | string, locale?: string): string {
return new Intl.NumberFormat(locale, {
minimumFractionDigits: 2
}).format(parseInt(value as string, 10));
}
}
答案 1 :(得分:0)
您应该使用Angular CurrencyPipe并覆盖法语显示。
您可以这样操作:https://devblog.dymel.pl/2016/09/22/how-to-extend-angular2-pipe/
然后,您要做的就是用点替换空格:)