用双精度格式化数字 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'
不幸的是四舍五入了这个数字,更糟糕的是,文档中没有关于它的任何字样(在这个答案的评论中找到:)
我需要在输入表单中加载一个数字,但是在格式化数字时出现了一些问题。详细数量可以是:
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'
不幸的是四舍五入了这个数字,更糟糕的是,文档中没有关于它的任何字样(在这个答案的评论中找到: