Formularios

Tipos de Formularios

Template Forms

  • Son formularios controlados por modelo

  • El modelo basado en plantillas

  • Angular crea modelos como FormGroups y FormControls

  • Directivas de Angular NgForm y NgModel

Reactive Forms

Mucho mas potentes y mejor rendimiento

  • Basados en Observables

  • Mejora el tipo de validación de los datos

  • Se usa para Formularios complejos

FormControl

Es la pieza mas atómica de un formulario reactivo.

Para poder utilizarlo se necesita importar el módulo ReactiveFormsModule, en el modulo principal

import { ReactiveFormsModule } from '@angular/forms';

@NgModule({
  declarations: [ ... ],
  imports: [ 
    ...
    ReactiveFormsModule,
    ...
  ],
  providers: [ ... ],
  bootstrap: [AppComponent]
})
export class AppModule { }

Para usarlo dentro de un componente

Manejo y binding de selects y selects múltiples

Para setear por defecto el valor del select que utiliza ngValue, se puede usar por ejemplo:

Con múltiple

Y observable

Manejo y binding de inputs radio y checkbox

Aplica validaciones a un FormControl

La clase FormControl recibe aparte del valor, puede recibir una o varias validaciones sincronas y asíncronas.

una mala préctica es mostrar el error desde el antes de utilizar el input para esto podemos usar la propiedad touched.

https://angular.io/api/forms/Validators

FormGroup

Un FormGroup es un grupo de FormContols y sirve para manejar todo el formulario, al igual que el FormControl tiene validaciones el FormGroup también pero a nivel de todo el form.

FormBuilder

Con FormBuilder se tiene una sintaxis un poco mas amigable

Multiples FormGroups

Sirve para agrupar campos de formulario con su validaciones independientes.

Validaciones personalizadas

Las validaciones grupales dependen de uno o mas campos del mismo formulario y lo validan todo.

Validaciones asincrónicas

Un ejemplo sería al intentar crear una categoría duplicada

PatchValue

Sirve para setear todos los datos de un formulario en una sola sentencia, los datos deben de estar en formato JSON

Agregar campos en tiempo de ejecución

Un formBuilder.array puede contener formBuilder.group o new FormControl.

Uso de ViewContainerRef y Componentes Dinámicos en Angular

Servicio para manejar el modal


Contenedor del modal


Componente modal dinámico


Usando el modal dinámico


Last updated