用双精度角格式化数字

时间:2018-10-02 07:59:49

标签: angular angular6 angular-pipe

我需要以输入形式加载数字,但是格式化数字时存在一些问题。详细信息可以是:

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.

我使用Angular6。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

第一问题是由逗号引起的。出于任何其他原因,另一个问题是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'不幸地将数字四舍五入,更糟糕的是,文档中对此一无所知(可在此答案的评论中找到:https://stackoverflow.com/a/38478060/3623608