¿Cuáles son las diferencias prácticas entre los formularios reactivos y basados en plantillas?
He estado leyendo sobre la nueva API de formularios de Angular2 y parece que hay dos enfoques en los formularios, uno es formularios basados en plantillas y otro es formularios reactivos o basados en modelos.
Me gustaría saber la diferencia práctica entre los dos, no la diferencia de sintaxis (obviamente), sino los usos prácticos y qué enfoque se beneficia más en diferentes escenarios. Además, ¿hay una mejora en el rendimiento al elegir uno sobre el otro? Y si es así, ¿por qué?
Funciones de formularios basados en plantillas:"
- Fácil de usar
- Adecuado para escenarios simples y falla para escenarios complejos.
- Similar a AngularJS
- Enlace de datos bidireccional (usando
[(NgModel)]
sintaxis) - Código de componente mínimo
- Seguimiento automático del formulario y sus datos (manejado por Angular)
- Las pruebas unitarias son otro desafío
Características de los formularios reactivos:
- Más flexible, pero necesita mucha práctica.
- Maneja cualquier escenario complejo
- No se realiza ningún enlace de datos (el modelo de datos inmutable es el preferido por la mayoría de los desarrolladores)
- Más código de componente y menos marcado HTML
- Se pueden hacer posibles transformaciones reactivas como:
- Manejo de un evento basado en un tiempo de rebote
- Manejo de eventos cuando los componentes son distintos hasta que se cambian
- Agregar elementos dinámicamente
- Pruebas unitarias más sencillas
Aquí está el resumen de la comparación entre formularios reactivos y impulsados por plantillas explicado por DeborahK (Deborah Kurata).
Creo que es una discusión sobre código , estrategia y experiencia de usuario .
En resumen, cambiamos del enfoque basado en plantillas , con el que es más fácil trabajar , a reactivo (en el enfoque basado en modelos) para brindarnos más control , lo que resulta en una forma mejor comprobable al aprovechar un desacoplamiento entre el HTML (diseño/ El equipo de CSS puede trabajar aquí) y las reglas comerciales de los componentes (miembros especialistas en angular/js) y para mejorar la experiencia del usuario con características como transformaciones reactivas, validaciones correlacionadas y manejo de escenarios complejos como reglas de validación en tiempo de ejecución y duplicación de campos dinámicos.
Este artículo es una buena referencia al respecto: Angular 2 Forms: enfoques basados en plantillas y basados en modelos