带有EUR角管的格式编号

时间:2018-10-23 07:46:04

标签: angular angular6 angular-pipe

我需要以这种方式设置数字的格式:

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 +)?

2 个答案:

答案 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/
然后,您要做的就是用点替换空格:)