Wrapping up
Form handling is a complex problem. One of the main reasons AngularJS got so successful is that two-way bindings and ng-model
provided a good solution for it. But there were some downsides, mainly complex forms built with ng-model
made the data flow of the application hard to follow and debug. Angular 2+ builds up on the ideas from Angular 1, but avoids its problems.
NgModel
and friends are no longer part of the core framework. The @angular/core
package only contains the primitives we can use to build a form-handling module. Instead, Angular has a separate package—@angular/forms
—that comes with FormsModule
and ReactiveFormsModule
that provide two different styles of handling user input.
Both the modules depend on the form model consisting of FormControl
, FormGroup
, and FormArray
. Having this UI-independent model, we can model and test input handling without rendering any components.
Finally, @angular/forms
comes with a set of directives to handle build-in UI elements (such as ...