CodeForge

Angular 21 de Cero a Experto / Fundamentos

Reto: Mi Bolsillo, tu primer árbol de componentes

Reto30 min60 XP

Es hora de juntar todo lo del módulo en una pieza real. Vas a construir el esqueleto de "Mi Bolsillo" —la app de gastos que acompaña todo el curso— como un árbol de componentes standalone con inputs, outputs y el nuevo control flow. La estructura de Angular la escribirás en código (comentado y exacto); la LÓGICA de datos la probarás en vivo aquí mismo.

Reto

El esqueleto de Mi Bolsillo en componentes

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

Qué debes construir

Un árbol de tres componentes standalone:

  1. TarjetaGastoComponent — recibe un nombre y un valor con input(), los muestra, y tiene un botón que emite un output() borrar con el id del gasto.
  2. ListaGastosComponent — recibe un array de gastos, los pinta con @for (usando track) y @empty para el caso vacío, y escucha el borrar de cada tarjeta.
  3. ResumenComponent — recibe el array y muestra el total y la cantidad de gastos.

Y por separado, la lógica pura de datos en TypeScript que estos componentes usarían: funciones para calcular el total, filtrar por categoría y encontrar el gasto más caro. Esa lógica la ejecutas en vivo en el playground de abajo.

Reglas

  • Usa la sintaxis moderna: input() / output(), control flow @for / @if / @empty, standalone (nada de NgModule, *ngFor ni @Input() decorador).
  • El @for debe usar track con un id estable.
  • La lógica de datos debe ser funciones puras tipadas (sin depender de Angular).

30:00

Cuando estés listo, arranca el reloj.

Qué sigue

Construiste tu primer árbol de componentes y separaste la lógica de la vista. Notaste que el total lo calculas "a mano" cada vez —funciona, pero no es reactivo—. El próximo módulo resuelve eso de raíz: signals. Vas a envolver ese total en un computed() que se recalcula solo, y a construir tu propio sistema de señales desde cero para entender la magia por dentro.