To understand why Angular uses two very different ways of reactive programming, we need to look at the differences between events and the state.
We often talk about events or event streams when discussing reactivity. Event streams are an important category of reactive objects, but so is state. So let’s compare their properties.
Events are discrete and cannot be skipped. Every single event matters, including the order in which the events are emitted. The “most recent event” is not a special thing we care about. Finally, very rarely are events directly displayed to the user.
The state, on the other hand, is continuous, i.e., it is defined at any point in time. We usually do not care about how many times it gets updated — only the most recent value matters. The state is often displayed or has a meaningful serialization form.
... read the whole story at blog.nrwl.io.