Here's a question for you: we all know you can do this in Angular
<div>{{some_val}}</div>
or, the way Google prefers it:
<div>{{someGetterFunc()}}</div>
Here's the question though; regardless of whether your access a scope variable directly, or use a getter, you are altering a stateful variable in a class behind the template if you otherwise alter it with a bound input or some other means.
I try to think more functionally than OOP these days. Lightweight and course grained types, streams, and compositional functions, make a lot of sense to me. So it occurred to me that if a "pure" function is one that doesn't alter state external to itself, that databinding an element than can change a stateful property (like an input field) seems to go pretty much the other way.
To that end, I've been using RxJs a lot, and have found a pattern (using ViewChild) in which I can (as far as I can see) remove these stateful model variables and in fact introduce more async data and event processing.
Curious what you think. Are the use of stateful databinding variables something we should be using more sparingly? In Angular 1.x, they caused a lot of performance issues (default 2-way binding) such that in 1.3 they introduced the "::" one-time binding syntax and began strongly downplaying the use of watchers. In Angular 2, the default is one-way binding, but still...are we well served by considering ways to minimize this mutable state in our code?