En ocasiones me parece más conveniente utilizar un solo formulario para crear y editar, suele ser un poco más práctico, para no repetir código. Claramente esto depende de la complejidad y el contexto del formulario
Conoce la importancia de los formularios para tu sitio web
Versiones de Angular Forms
¿Por qué aprender Angular Forms?
Presentación del proyecto: tour por los formularios de Platzi Store
Novedades de Angular 10: cómo migrar proyectos de Angular 8 o 9 a la versión 10
Primeros pasos con Angular Forms
Template Forms vs. Reactive Forms
Dominando el FormControl y sus estados
Cómo usar inputs de texto y la importancia del type
Manejo y binding de selects y selects múltiples
Manejo y binding de inputs radio y checkbox
Aplica validaciones a un FormControl
Integración y validaciones con CSS para mostrar errores
Descubre todas las validaciones de Angular Forms
Usando FormGroup para agrupar multiples campos
Reactive Forms con FormBuilder
Los 11 validadores de Angular (y expresiones regulares)
Manejando múltiples FormsGroups
Usando componentes de Angular Material
Errores comunes de usabilidad en formularios
Validaciones personalizadas: mejorando nuestro formulario de registro
Implemeta validaciones avanzadas en PlatziStore
Cómo hacer validaciones grupales en Angular Forms
Validaciones condicionadas y reactividad a variaciones en la UI
Proyecto: formulario para crear categorías de productos
Proyecto: conectando nuestro formulario y la API
Proyecto: subir imágenes a Firebase Storage
Validaciones asincrónicas
PatchValue: crear vs. editar
Proyecto: creando el método de editar categorías
Construye formularios dinámicos conectando una API
Smart vs. dumb components: un patrón para dividir responsabilidades
Implementando smart y dumb components en PlatziStore
Proyecto: mejorando nuestro formulario de productos
Select dinámico: carga opciones desde una API
Select dinámico: trabajando con objetos
¿Cómo crear campos on demand? Forms dinámicos con FormArray
Estrategias avanzadas y optimización de formularios
Crea tu propia librería de componentes con CVA o Control Value Accesor
Crea un buscador de gifs usando la API de Giphy
Optimiza un input de búsquedas con RxJS y debounce
Examina la accesibilidad de tus formularios
Siguientes pasos en tu carrera de desarrollo web profesional con Angular
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 6
Preguntas 2
En ocasiones me parece más conveniente utilizar un solo formulario para crear y editar, suele ser un poco más práctico, para no repetir código. Claramente esto depende de la complejidad y el contexto del formulario
😃
Para que funcione con la nueva API tuve que modificar el ngOnInit un poco, siendo honesto no me gusta del todo creo que se podria hacer mejor utilizando un combineLatest o un fokjoin para hacer las peticiones juntas, pero por el momento funciona:
ngOnInit() {
this.getCategories()
this.activatedRoute.params.subscribe((params: Params) => {
this.id = params.id;
this.productsService.getProduct(this.id)
.subscribe(product => {
this.form.patchValue(product);
this.categoryIdField.setValue(product?.category.id)
});
});
}
Y tambien agregar Category al modelo de products
import { Category } from "./category.model";
export interface Product {
id: string;
name: string;
price: number;
description: string;
images: string[];
category?: Category
}
Me parece que primero se debería cargar el listado de categorías y luego hacer el form.pachValue, por que si al cargar categorías tarda un poco, a la hora de hacer el patch no va encontrar la categoría y no lo seleccionara, ocasionando que siempre aparezca el primer item seleccionado.
<mat-select [(ngModel)]="selectedCategory" placeholder="Select a Category" formControlName="category_id" (change)="eventSelection($event)">
<mat-option *ngFor="let category of categories" [value]="category._id">{{ category.name }}</mat-option>
</mat-select>
Me gusta mucho utilizar los select con Observables y asycn pipes, aunque a veces debo de utilizarlo de la forma normal por temas de procesos. muy buena clase Nico.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?