我订阅了Angular 2(2.2.1)控件的valueChanges
可观察量。它在{angular \ forms \ src \ model.d.ts中的AbstractControl
中定义,它的文档字符串表明它将从UI以及程序化的更改:
/**
* Emits an event every time the value of the control changes, in
* the UI or programmatically.
*/
valueChanges: Observable<any>;
如何对此进行过滤以仅向我提供来自用户界面而非程序化更改的更改?
我认为布尔道具(原始的,肮脏的,触摸的等)对我没有帮助,因为即使控件被标记为脏 - 表示我想要捕获的UI的变化 - 可能会有进一步的程序化变化,我想忽略它。
答案 0 :(得分:10)
您可以使用
control.setValue(123, {emitEvent: false})
另见
答案 1 :(得分:0)
嗯,您希望忽略以编程方式所做的更改,这意味着您(程序员,而不是最终用户)所做的更改。
进行程序更改时,可以在共享服务中设置属性。订阅valueChanges
observable时,只需每次都查阅共享服务。