用双精度格式化数字 angular

format a number with double precision angular

我需要在输入表单中加载一个数字,但是在格式化数字时出现了一些问题。详细数量可以是:

1.99
15.00
230.88
2,999.00
etc

我使用这个代码:

 [ngModel]="price |  number : '1.2-2' "

但它给了我这个警告:

The specified value "1,333.00" is not a valid number.

我用Angular 6.谁能帮帮我?

第一个问题是由逗号引起的。由于任何其他原因 另一个 问题是 number : '1.2-2' 不会在逗号前取大 3 位的值。

我已经创建了一个 stackblitz 来展示一个可能的解决方案:

<input type="number" [ngModel]="price | toNumber "/>

使用自定义管道替换 , 并确保 number : '1.2-2' 仍然有效。您可以根据需要扩展它以解决任何问题。

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'toNumber'
})
export class ToNumberPipe implements PipeTransform {
  transform(value: string):any {
    let retNumber = parseFloat(parseFloat(value.replace(/,/g, '')).toFixed(2))
    return isNaN(retNumber) ? 0 : retNumber;
  }
}

自定义管道解决方案的优点:您可以自定义您的行为。 number : '1.2-2' 不幸的是四舍五入了这个数字,更糟糕的是,文档中没有关于它的任何字样(在这个答案的评论中找到: