Validaciones Asíncronas con API para Formularios de Categorías
Clase 24 de 37 • Curso de Angular Forms: Creación y Optimización de Formularios Web
Contenido del curso
- 5

Ventajas de los Formularios Reactivos en Angular
01:32 - 6

For Control en Formularios Reactivos: Creación y Uso Básico
17:16 - 7

Tipos de Input en HTML y su Impacto en la Experiencia de Usuario
08:12 - 8

Uso de Selects y Selectores Múltiples en Formularios HTML
07:00 - 9

Implementación de Inputs Radio y Checkbox en Formularios HTML
09:20 - 10

Validaciones en Formularios con Angular: Sincronización y Estados
12:15 - 11

Integración de CSS Dinámico en Formularios Reactivos con Angular
12:42
- 12

Manejo de formularios reactivos con FormGroup en Angular
10:00 - 13

Creación de Formularios Reactivos con FormBuilder en Angular
12:25 - 14

Validaciones en Angular: 11 Métodos y Expresiones Regulares
13:40 - 15

Manejo de FormGroups Anidados en Formularios Angular
09:23 - 16

Implementación de Formularios con Angular Material
14:31 - 17

Errores Comunes en Formularios Angular Material
05:27 - 18

Validaciones Personalizadas de Contraseñas en Angular
15:22
- 19

Validaciones Grupales en Formularios Reactivos de Angular
10:11 - 20

Validaciones Condicionadas en Formularios Reactivos
09:09 - 21

Gestión de Categorías en Angular: Creación y Edición de Formularios
06:32 - 22

Conexión de una API REST con Angular y Postman
15:47 - 23

Subir Imágenes a FiberStorage con Angular y HTML
12:36 - 24

Validaciones Asíncronas con API para Formularios de Categorías
17:55 - 25

Edición de Categorías con Patch Value en Angular
11:16 - 26

Editar y Crear Categorías con un Solo Formulario
06:01
- 27

Patrón Smart y DOM Components en Formularios Angular
17:01 - 28

Modificación de Inputs en Angular con Setters y Ciclo de Vida
09:49 - 29

"Mejoras en Formularios y Validaciones de Productos"
10:13 - 30

Select dinámico con Angular y API de categorías
12:17 - 31

Select dinámico con objetos en Angular y Angular Material
07:45 - 32

Creación de Formularios Dinámicos con Reactive Forms en Angular
15:35
- 33

Conexión de Componentes Propios a Reactive Forms en Angular
19:40 - 34

Optimización de búsquedas con NGRX y HTTP en Angular
15:46 - 35

Optimización de Búsquedas con Debounce Time en Angular
06:47 - 36

Fundamentos de Accesibilidad Web para Desarrolladores
07:01 - 37

Rendimiento y Optimización en Aplicaciones Angular
01:27
¿Cómo realizar validaciones asincrónicas en un formulario?
Las validaciones asincrónicas son clave para ofrecer una experiencia de usuario fluida y optimizada. Imagina estar llenando un formulario largo, llegar al final para guardar la información y ¡sorpresa! aparece un error. Esto puede ser frustrante, ¿verdad? Mediante el uso de validaciones asincrónicas, podemos alertar al usuario de inmediato si el nombre ya está en uso, similar a cuando creas un correo en plataformas como Hotmail. Exploraremos el uso de una API que verifica la disponibilidad de categorías en tiempo real a medida que el usuario ingresa la información.
¿Cómo funciona el endpoint de disponibilidad?
Para realizar la validación asincrónica, utilizaremos un endpoint específico de nuestra API que verifica la disponibilidad de una categoría.
- Ruta completa:
API categories availability - Método: POST
- Funcionalidad: Envía el nombre de la categoría deseada por crear y devuelve un JSON con un valor booleano indicando si está disponible (
true) o no (false).
Este es el primer paso para conectar nuestra validación asincrónica con el frontend.
¿Cómo implementar la validación en el servicio?
Primero, debemos implementar un método en nuestro servicio categories service que se conecta al endpoint de disponibilidad. Aquí te mostramos cómo hacerlo:
function checkCategory(name) {
return this.http.post('categories/availability', { name });
}
Este método envía el nombre de la categoría al endpoint y espera la respuesta de disponibilidad. Podemos especificar en el código que esperamos un booleano como respuesta.
¿Cómo crear la validación en validators?
Dentro de nuestra clase de validaciones personalizadas (validators), redactamos la lógica de la validación asincrónica. Aquí se utiliza el poder de crear funciones dentro de funciones, una práctica común en lenguajes como JavaScript.
import { map } from 'rxjs/operators';
static validateCategory(service) {
return (control) => {
const value = control.value;
return service.checkCategory(value).pipe(
map(response => response.isAvailable ? null : { notAvailable: true })
);
}
}
Este fragmento de código toma el valor del control, verifica su disponibilidad usando el servicio y retorna null si está disponible o un error si no lo está. Es esencial que comprendas el funcionamiento de observables y operators de RxJS para transformar las respuestas adecuadamente.
¿Cómo aplicar la validación al formulario?
Una vez configurada nuestra validación, es momento de integrarla con el formulario de categorías:
this.categoryForm = this.formBuilder.group({
name: [
'',
[Validators.required, Validators.minLength(4)],
[Validators.validateCategory(this.categoryService)]
]
});
Incluimos nuestras validaciones sincronas primero (Validators.required y Validators.minLength), seguidas de nuestra validación asincrónica personalizada.
¿Cómo se visualizan los errores en el formulario?
Para mejorar la experiencia del usuario, mostramos mensajes de error junto al campo correspondiente si hay algún problema con la validación.
<div *ngIf="form.errors?.notAvailable">
Este nombre ya lo tiene otra categoría.
</div>
Estos mensajes proporcionan un feedback claro e inmediato al usuario, ayudándoles a corregir errores antes de seguir completando el formulario.
Esperamos que este enfoque para implementar validaciones asincrónicas te sea útil para mejorar tus desarrollos. A medida que vayas adquiriendo práctica, estas técnicas se volverán parte de tu arsenal de herramientas para desarrollar interfaces dinámicas y responsivas. ¡Sigue aprendiendo y éxitos en tus proyectos!