【问题标题】:Listen for changes values in a form using Reactive Forms使用响应式表单侦听表单中的更改值
【发布时间】:2019-09-07 09:17:58
【问题描述】:

有没有办法(仅)监听 FormGroup 中的变化?有了变化,我的意思是只有确切的键和值发生了变化?

例如,如果输入 name 发生变化,则 @​​987654323@ 之类的内容应该是 emmitet

我不喜欢的一个解决方案是订阅每个 FormControl 的 valueChanges。

我提供了一个小例子来测试here

【问题讨论】:

  • 重新表达您的愿望 - 您想知道 formControl 值是否已更改,但不想订阅?
  • @wentjun 这不是重复的,因为我在我的问题中排除了答案。
  • @WhiteHorse。例如,如果我有一个包含 1000 个输入的表单,我不想进行 1000 个订阅。但我还没有找到不同的解决方案。
  • 如果没有订阅,您将无法实时收到更改通知
  • @dindunuffin 对此感到抱歉,我已将其删除。由于该示例显示两个表单控件都是输入,您是否尝试过通过执行此类操作来监听更改? (change) = onInputChange($event)

标签: angular forms angular-reactive-forms


【解决方案1】:

您可以在FormGroup 上订阅valueChanges,但您必须检查各个值才能知道哪个FormControl 的值发生了变化。

【讨论】:

    【解决方案2】:

    你可以使用pairwise

      .pipe(
       startWith({}),
       pairwise()
        ,tap(([previousValue, currentValue]) => {
        /** compare values here */
    })
    )
    ;
    

     .pipe(
       startWith({}),
       pairwise()
    )
    .subscribe(([previousValue, currentValue]) => {
        /** compare values here */
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-09
      • 2018-12-25
      • 2020-08-17
      • 2020-09-23
      • 2018-02-01
      • 2022-10-14
      • 1970-01-01
      • 2020-07-12
      相关资源
      最近更新 更多