Angular’s model function creates a model signal: a signal that acts as both a component input and output. When its value changes, Angular emits the new value to the parent, allowing two-way binding without manually pairing input and output properties. section 10.3.4
Before model signals, a two-way-bindable property conventionally required an @Input plus an @Output named with the Change suffix. Templates could then use Angular’s two-way-binding syntax, but component code had to maintain both sides of that contract. section 10.3.4
Declare a model property
Use model() for a property that must receive a value from a parent and report updates back through the same two-way-binding pattern: property = model(); The parent can bind with [(property)]="someProperty". section 10.3.4
Model signals arrived in Angular v17.2. They replace the older pairing where property was declared as an input and propertyChange as an EventEmitter output, while preserving familiar template binding syntax. section 7.5.2 section 10.3.4
property = model();
A minimal model() declaration shows the component-side replacement for a conventional input/output pair. section 10.3.4
