我想通过指令更改onBlur事件的输入上的视图和模型数据。

我写了这个函数来更新视图和模型:

@HostListener('blur',['$event'])
  blur(e:Event){
    const target:HTMLInputElement = <HTMLInputElement>e.target;
    const val = this.decimalPipe.transform(target.value.replace(/\,/g,''),'1.2-2');
    this.ngModel.viewToModelUpdate(Number(val.replace(/\,/g,'')));
    this.ngModel.valueAccessor.writeValue(val);
  }


这很好用,但是当我想在输入this.ngModel.viewToModelUpdate上定义表单控件时,不会影响模型。

表单组代码:

form = new FormGroup({amountInput:new FormControl('',Validators.min(this.traderService.trader.sMPA)),
  });


可以看到忽略了此功能,并将模型设置为字符串。如何更新型号为数字?

最佳答案

尝试使用:

this.ngModel.control.patchValue(Number(val.replace(/\,/g,'')));


代替

this.ngModel.viewToModelUpdate(Number(val.replace(/\,/g,'')));


在Angular 5上使用formControl输入的自定义指令也存在相同的问题。

07-24 09:46
查看更多