= formularios
== template-driven forms
* la plantilla es la responsable de crear los controles, formularios y reglas de validación
* sincronización entre la vista y el modelo con el doble enlace (two-way databinding)
* si la vista cambia, se actualiza el modelo, y viceversa
* se enlaza con el atributo **name** de html y el atributo **ngModel** de Angular
* **[( propiedad )]**((banana in a box)), excepto si se usa **ngModel**
* importar el **FormsModule** en **app.module.ts**
=== caso
* doble binding con **ngModel** y **required**:
* el framewrok añadirá una serie de clases para indicar diferentews estados (ng-pristne, ng-dirty, ng-untoched, ng-touched, ng-valid, ng-invalid) que nos puede servir para darle nuestro estilo (css)
* añadir **#espia** y {{espia.className}} para opciones de "debug" (y ver que clases tiene nuestro control):
{{espia.className}}
* además, para evitar la validación propia de HTML5 (y el navegador), tenemos:
* si no la queremos, quitamos la etiqueta
* por contra, le añadimos una función y la vinculación a ella: guardar() {
console.log("Formulario enviado");
}
PPT 8.2~2
== reactive forms (aka data-driven forms)
* la clase del componente es responsable de craer el formulario, sus controles y la configuración de validación