A basic requirement for every Web framework is to synchornize a data model and the Browser DOM. Detecting data model change is a central task. Angular separates updating the application and DOM changes into two distinct phases. The developer is responsible for model changes in one phase and Angular synchronizes the model changes in change detection in another phase.
Angular enforces an unidirectinal data flow from parent to child via
@Input() property binding. A child should not change its parent’s state directly. A child can communicate with its parent using
@Output() event or via shared service.