Reputation: 7419
I'm subscribing to the valueChanges
observable of an Angular 2 (2.2.1) control. It's defined in AbstractControl
in @angular\forms\src\model.d.ts and it's doc string states that it will yiald changes from the UI as well as programmatic ones:
/**
* Emits an event every time the value of the control changes, in
* the UI or programmatically.
*/
valueChanges: Observable<any>;
How can I filter this down to give me only the changes from the UI and not the programmatic ones?
I think that the boolean props (pristine, dirty, touched, etc.) won't help me, because even after a control is marked dirty - indicating a change from the UI, which I would like to capture - there might be further programmatic changes, which I would like to ignore.
Upvotes: 6
Views: 4210
Reputation: 657731
You can use
control.setValue(123, {emitEvent: false})
See also
Upvotes: 18
Reputation: 321
Well, you want to ignore changes made by programatically, that means changes made by you (the programmer, not the end user).
When you make a programatic change, you may set a property in a shared service. When you subscribe the valueChanges
observable, simply consult the shared service every time.
Upvotes: 0