Mat-slide:一次更改触发两次订阅 valuechanges

MrS*_*Scf 2 angular-material angular

我想将滑动条与输入文本同步。它工作正常。此外,我希望在发生模糊事件时更新控件(updateon: 'blur'但我还希望在滑块更改时立即更新表单控件的值。

https://stackblitz.com/edit/angular-cakpgs

现在我的问题是:当我通过滑动条更改控件的值时,我的表单的 valuechanges 被触发两次。当我更改值时,我在公式中执行 patchValue ,因为我想立即更新该值。并且当滑动条失去焦点(模糊事件)时,再次触发 valuechanges 通知。

我该怎么做,我的公式的 valuechanges 只触发一次,要求:

  1. 发生模糊事件时应更新表单控件 updateon: 'blur'
  2. 通过滑动条更改的值应立即更新

MrS*_*Scf 6

我做了以下事情:

this.form.valueChanges
.pipe(distinctUntilChanged((a, b) => JSON.stringify(a) === JSON.stringify(b)))
.subscribe(change => console.log(change));
Run Code Online (Sandbox Code Playgroud)

所以我检查表单是否真的发生了变化,如果发生了变化,则执行订阅者。否则不调用订阅者。