跳过Angular 2控件的valueChanges中的程序化更改

Eag*_*eak 4 rxjs angular2-forms angular

我正在订阅valueChangesAngular 2(2.2.1)控件的可观察量.它AbstractControl在@angular\forms\src\model.d.ts中定义,并且它的文档字符串表明它将从UI以及程序化的更改:

/**
 * Emits an event every time the value of the control changes, in
 * the UI or programmatically.
 */
valueChanges: Observable<any>;
Run Code Online (Sandbox Code Playgroud)

如何对其进行过滤以仅向我提供UI的更改,而不是程序化的更改?

我认为布尔道具(原始的,脏的,触摸的等)对我没有帮助,因为即使控件被标记为脏 - 表示我想要捕获的UI的变化 - 可能还有进一步的程序化变化,我想忽略.

Gün*_*uer 12

您可以使用

control.setValue(123, {emitEvent: false})
Run Code Online (Sandbox Code Playgroud)

也可以看看

  • 坦率地说,这是一个黑客。等到你忘记 `valueChanges` 最新值可能与 `control.value` 不同步,或者团队中的某个人没有被告知这个黑魔法。 (2认同)