代码之家  ›  专栏  ›  技术社区  ›  Sammaye

如何使用formcontrol.valuechanges设置输入值的格式

  •  0
  • Sammaye  · 技术社区  · 6 年前

    我想将输入的每个值格式化为 FormControl 在我的页面上使用 parseFloat ,由于第三方插件的要求,所以我制作了如下内容:

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

    显然这不起作用,它创建了一个无限循环。

    我怎么能做这样的事情,但没有循环?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Morphyish    6 年前

    patchValue 接受包含选项的次要参数,包括 emitEvent 选择。

    你可以用

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

    你将避免无限循环 patchValue 方法不会触发另一个 valueChanges .

    推荐文章