Angular has different mechanisms for sharing data between components. The choice
of the sharing method mostly depends on the relationship of the related
components. Typically, within the context of a parent-child topology, the most
straightforward choice would be to use the @Input and @Output decorators.
For sibling components, relying on a data sharing service seems to be the most
obvious solution. In any case, once you have settled on the choice of a
communication topology, you need to decide which data propagating mechanism to
use.
Generally, components use EventEmmiter objects to share data with each other.
When you pass data into an Angular component with an @Input decorator, you are
actually using an EventEmitter object. Although this solution is appropriate
for the majority of situations, this is not always the case. Let's consider the
following example:
