如何在基于angular8中的焦点输出格式化输入后删除十进制值

How to remove decimal value after the input is formatted based on focus out in angular8

我已经使用货币管道来格式化输入,但是当我从输入字段中出来时,我得到了 .00,但我想要 1,000,000 美元(没有小数,必要时包括逗号并显示 $ 符号)但现在我是这样得到它的,如果我输入 1000000,它显示为 1,000,000.00 美元,但我希望它是 1,000,000 美元。

HTML:

 <input type="text" class="form-control" placeholder="Amount in dolars"
            formControlName="amount" autocomplete="off" currencyInput maxDigits="9">

指令:

private regexString(max?: number) {
    const maxStr = max ? `{0,${max}}` : `+`;
    return `^(\d${maxStr}(\.\d{0,2})?|\.\d{0,2})$`
  }
  private digitRegex: RegExp;
  private setRegex(maxDigits?: number) {
    this.digitRegex = new RegExp(this.regexString(maxDigits), 'g')
  }
ngOnInit() {
    this.el.value = this.currencyPipe.transform(this.el.value, 'USD');
  }

  @HostListener("focus", ["$event.target.value"])
  onFocus(value) {
    // on focus remove currency formatting
    this.el.value = value.replace(/[^0-9.]+/g, '')
  }

  @HostListener("blur", ["$event.target.value"])
  onBlur(value) {
    // on blur, add currency formatting
    this.el.value = this.currencyPipe.transform(value, 'USD');
  }

在复制粘贴期间和我们出来的时候,即使是那个时候,我也希望格式如前所述,但我尝试使用符号:“1-0.0”,但几乎没有任何效果。

请帮忙

DEMO

Demo

变换后把它模糊化

var lasttrim=this.el.value.substr(-2);
if(lasttrim=="00"){
      this.el.value=this.el.value.substr(0,this.el.value.length-3)
}

你的主办活动就是这样

@HostListener("blur", ["$event.target.value"])
  onBlur(value) {
    // on blur, add currency formatting
    this.el.value = this.currencyPipe.transform(value, 'USD');
     var lasttrim=this.el.value.substr(-2);
     if(lasttrim=="00"){
         this.el.value=this.el.value.substr(0,this.el.value.length-3)
     }
  }