使用 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') 格式化数字。