CodeForge

Angular 21 de Cero a Experto / Formularios

Reto: el formulario de nuevo gasto, validado y accesible

Reto35 min60 XP

Vas a construir la puerta de datos de "Mi Bolsillo": el formulario reactivo de "nuevo gasto", con validación completa (integrada y custom), errores accesibles y la lógica probada en vivo. Es el formulario que usará tu app durante todo el curso —hoy lo dejas listo con estándar profesional—.

Reto

Formulario reactivo de gasto: validación completa

Media35 min60 XP(×2 sin mirar la solución)

Qué debes construir

Un formulario reactivo (FormGroup) para crear un gasto, con:

  1. Campos: nombre (requerido, sin solo espacios), valor (requerido, mínimo 1, máximo 10.000.000), categoria (requerido, una de la lista).
  2. Un validador custom noSoloEspacios para el nombre.
  3. Errores accesibles: cada campo con aria-invalid, aria-describedby y mensajes con role="alert", mostrados solo cuando el campo es invalid && touched.
  4. Envío: si es inválido, markAllAsTouched() y no envía; si es válido, produce el objeto Gasto limpio (nombre recortado).

Y la LÓGICA de validación pura probada en vivo: valida el objeto del formulario y devuelve los errores por campo o el gasto listo.

Reglas

  • Reactivo (nada de ngModel), con FormBuilder y validadores.
  • El validador noSoloEspacios debe ser una función pura reutilizable.
  • La validación en vivo debe reportar errores por campo, no solo un booleano.

35:00

Cuando estés listo, arranca el reloj.

Qué sigue

Terminaste el módulo de formularios: sabes capturar datos con validación robusta y accesibilidad real. Notaste que valueChanges es un Observable y que toSignal lo conecta a señales. El próximo módulo desentraña ese mundo: RxJS a gran escala —Observables, operadores, higher-order, y la interop con señales—. La herramienta de Angular para flujos de eventos asíncronos: búsquedas en vivo, autocompletado, tiempo real.