我不确定我是否完全理解您的需求,但我通常使用货币输入或查看功能,如下所示:
组件.ts
public price;
addCommas(number) {
let nStr;
if(typeof number == 'string'){
nStr = number;
}else if(typeof number == 'number'){
nStr = number.toString();
}else{
// console.error("ERROR addCommas() : ", number);
return;
}
nStr += '';
let x = nStr.split('.');
let x1 = x[0];
let x2 = x.length > 1 ? '.' + x[1] : '';
let rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
组件.html
<div>
<app-money-input [(ngModel)]="price"></app-money-input>
${{addCommas(price)}} //price is not changed. but transformed when it is rendered.
</div>
然后,您不需要更改价格变量。仅视图模板在呈现时使用 addCommas 函数更改格式。
我希望它对你有帮助:)
我添加了输入 NgModel 转换格式功能。
使用 priceString 变量定义 ngModel。
定义将原始值保存到价格变量的转换函数。并转换 $ 和逗号格式并将其保存到 pricsString 变量。
输入的 keyup 事件绑定
使用价格(没有格式的原始值)作为输出
*.ts :
convertPrice(event:any){
this.price = this.priceString.replace(/,/gi, "");
this.priceString = this.price.split(/(?=(?:\d{3})+$)/).join(",");
console.log(this.priceString);
}
*.html
<input type="text" class="form-control input-sm" id="Price"
required
(keyup)="convertPrice($event)"
[(ngModel)]="priceString"
placeholder="please enter price">