如何使用FormControl.valueChanges格式化输入值

时间:2019-08-03 18:24:57

标签: angular angular8

由于第三方插件的要求,我想使用FormControl格式化输入到页面上某个parseFloat的每个值,所以我做了类似的事情:

this.form.get('latitude').valueChanges.subscribe(e => {
  this.form.patchValue({latitude: parseFloat(e)});
});

显然这是行不通的,它会创建一个无限循环。

我该如何做却没有循环?

1 个答案:

答案 0 :(得分:1)

patchValue接受包含选项的辅助参数,包括emitEvent选项。

您可以通过以下方式更新代码

this.form.get('latitude').valueChanges.subscribe(e => {
  this.form.patchValue({latitude: parseFloat(e)}, {emitEvent: false});
});

您将避免无限循环,因为patchValue方法不会触发另一个valueChanges