我需要以输入形式加载数字,但是格式化数字时存在一些问题。详细信息可以是:
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。有人可以帮助我吗?
答案 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)