Template Driven Forms :
imported using FormsModule
Forms built with ngModel directive can only be tested in an end to end test because this requires the presence of a DOM
The form value would be available in two different places: the view model ie ngModel
Form validation, as we add more and more validator tags to a field or when we start adding complex cross-field validations the readability of the form decreases
Reactive Forms :
Can generally used for large-scale applications
complex validation logic is actually simpler to implement
imported using ReactiveFormsModule
The form value would be available in two different places: the view model and the
FormGroup
Easy to Unit Test :
We can do that just by instantiating the class, setting some values in the form controls and perform assertions against the form global valid state and the validity state of each control.
Use of Observables for reactive programming
For example: a password field and a password confirmation field need to be identical
Reactive way : we just need to write a function and plug it into the FormControl
Template-Driven Way : we need to define a directive and somehow pass it the value of the two fields
https://blog.angular-university.io/introduction-to-angular-2-forms-template-driven-vs-model-driven/