a TypeScript class, an HTML template, and CSS styles Essentially define your custom DOM nodes Component templates can use more components 👉 An application is essentially a tree of components
track asynchronous operations Achieved via monkey patching Angular creates a root zone for the application ("NgZone") When an event or asynchronous task occurs, Zone.js notifies Angular Angular triggers change detection and updates the views
component tree Check template bindings If change detected, update DOM node Changes propagated to children AppComponent UsersComponent UserListComponent UserFilterComponent RadioButtonComponent
more often than necessary Sometimes leads to unpredictable behavior Recheck all template bindings 👉 Advanced concepts to learn to improve performance: OnPush, Immutability, runOutsideAngular, ...
new value to the Signal update() Update the Signal's value based on its current one computed() Create a read only Signal deriving its value from other Signals
for side effects logging, persisting to browser storage, ... Executed once initially Can not write to Signals by default Reliant on the injection context
a component input model() Creates a writable Signal that reflects changes (two way binding) viewChild() / viewChildren() Access references to components, directives and elements in your view