Formas controladas por plantilla:
importado usando FormsModule
Los formularios creados con la directiva ngModel solo se pueden probar en una prueba de extremo a extremo porque esto requiere la presencia de un DOM
El valor del formulario estaría disponible en dos lugares diferentes: el modelo de vista, es decir, ngModel
Validación de formulario, a medida que agregamos más y más etiquetas de validación a un campo o cuando comenzamos a agregar validaciones complejas de campo cruzado, la legibilidad del formulario disminuye
Formas reactivas
Generalmente se puede usar para aplicaciones a gran escala
lógica de validación compleja es en realidad más simple de implementar
importado usando ReactiveFormsModule
El valor del formulario estaría disponible en dos lugares diferentes: el modelo de vista y el FormGroup
Prueba fácil de unidad: podemos hacerlo simplemente instanciando la clase, estableciendo algunos valores en los controles del formulario y realizando afirmaciones contra el estado válido global del formulario y el estado de validez de cada control.
Uso de observables para programación reactiva
Por ejemplo: un campo de contraseña y un campo de confirmación de contraseña deben ser idénticos
Forma reactiva: solo necesitamos escribir una función y conectarla al FormControl
Forma guiada por plantilla: necesitamos definir una directiva y de alguna manera pasarle el valor de los dos campos
https://blog.angular-university.io/introduction-to-angular-2-forms-template-driven-vs-model-driven/