使用 CurrencyPipe 转换反应形式的输入
Transform an input of reactive Form with CurrencyPipe
我有一个输入框,需要输入货币值。这意味着我需要输入一个逗号“,”(EUR)。
我遵循代码工作正常,但逗号被忽略,我尝试了不同的表达式,但没有人工作正常。
我怎样才能同时允许逗号?
ngOnInit(): void {
this.addTicketForm.valueChanges.subscribe((form) => {
if (form.ek) {
this.addTicketForm.patchValue(
{
ek: this.currencyPipe.transform(
form.ek.replace(/\D/g, '').replace(/^0+/, ''),
'EUR',
'symbol',
'1.0-0',
'de'
),
},
{ emitEvent: false }
);
}
});
}
<div class="form-group col-3">
<label for="ek">EK</label>
<input id="ek" class="form-control" formControlName="ek" />
</div>
如果您始终使用没有小数部分的整数值,而不是 form.ek.replace(/\D/g, '').replace(/^0+/, '')
,您可以使用
Number(ek.replace(/\D+/g, '')).toLocaleString('en')
也就是
- 删除所有非数字字符(包括逗号、点等)
.replace(/\D+/g, '')
- 使用
Number(...).toLocaleString('en')
格式化数字。
我有一个输入框,需要输入货币值。这意味着我需要输入一个逗号“,”(EUR)。 我遵循代码工作正常,但逗号被忽略,我尝试了不同的表达式,但没有人工作正常。 我怎样才能同时允许逗号?
ngOnInit(): void {
this.addTicketForm.valueChanges.subscribe((form) => {
if (form.ek) {
this.addTicketForm.patchValue(
{
ek: this.currencyPipe.transform(
form.ek.replace(/\D/g, '').replace(/^0+/, ''),
'EUR',
'symbol',
'1.0-0',
'de'
),
},
{ emitEvent: false }
);
}
});
}
<div class="form-group col-3">
<label for="ek">EK</label>
<input id="ek" class="form-control" formControlName="ek" />
</div>
如果您始终使用没有小数部分的整数值,而不是 form.ek.replace(/\D/g, '').replace(/^0+/, '')
,您可以使用
Number(ek.replace(/\D+/g, '')).toLocaleString('en')
也就是
- 删除所有非数字字符(包括逗号、点等)
.replace(/\D+/g, '')
- 使用
Number(...).toLocaleString('en')
格式化数字。