Angular Desarrollo web javascript Typescript

Angular Signals: Guía práctica para gestionar estado reactivo en Angular

angular signals
Angular Signals introducen una forma moderna, nativa y eficiente de manejar estado reactivo en aplicaciones Angular. Permiten reducir complejidad, mejorar rendimiento y evitar suscripciones innecesarias cuando no son requeridas.

En este artículo aprenderás qué son los Signals, cómo utilizarlos correctamente en componentes Angular y cuándo conviene combinarlos con RxJS.


¿Qué son los Signals en Angular?

Un Signal es un contenedor reactivo ligero que envuelve un valor. Angular detecta automáticamente dónde se consume ese valor y actualiza únicamente las partes necesarias de la interfaz cuando cambia.

  • Reactividad síncrona
  • Nativos de Angular
  • Sin suscripciones manuales
  • Reactividad de grano fino

Creación básica de un Signal


import { signal } from '@angular/core';

const contador = signal(0);

// Leer valor
contador();

// Asignar valor
contador.set(5);

// Actualizar valor
contador.update(v => v + 1);

Los signals se leen invocándolos como función, lo que permite a Angular rastrear automáticamente las dependencias.


Uso correcto de Signals en componentes Angular

Componente (TypeScript)


import { Component, signal } from '@angular/core';

@Component({
  selector: 'app-contador',
  templateUrl: './contador.component.html'
})
export class ContadorComponent {

  contador = signal(0);

  incrementar(): void {
    this.contador.update(v => v + 1);
  }

}

Template (HTML)


Valor: {{ contador() }}

<button>
Incrementar
</button>

El template accede al signal llamándolo como función. No se requiere async pipe ni suscripciones manuales.


Computed Signals

Los computed signals permiten definir valores derivados
que se recalculan automáticamente cuando cambian sus dependencias.


import { signal, computed } from '@angular/core';

const precio = signal(100);
const cantidad = signal(2);

const total = computed(() => precio() * cantidad());

Son ideales para lógica derivada sin efectos secundarios.


Effects

Los effects permiten reaccionar a cambios en los signals mediante efectos secundarios como logging o sincronización con servicios externos.


import { effect } from '@angular/core';

effect(() => {
  console.log('El contador cambió:', contador());
});

Buena práctica: no modificar signals dentro de un effect, ya que puede provocar bucles infinitos.


Signals vs RxJS

Escenario Signals RxJS
Estado local de UI ✅ Ideal ❌ Sobrecarga innecesaria
Valores derivados ✅ computed() ⚠️ combineLatest
Datos asíncronos ⚠️ Limitado ✅ Recomendado
Flujos complejos ❌ No diseñado ✅ Mejor opción

Buenas prácticas con Signals

  • Usar Signals para estado local y de presentación
  • Usar computed para lógica derivada
  • Usar effect solo para efectos secundarios
  • Combinar Signals y RxJS cuando exista asincronía real

Conclusión

Angular Signals no reemplazan RxJS, pero sí ofrecen una alternativa más simple,
legible y eficiente para muchos casos comunes de manejo de estado.

Dominar Signals es clave para desarrollar aplicaciones Angular modernas,
con mejor rendimiento y menor complejidad.


Fuente original:

Angular Signals Cheatsheet – certificates.dev

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *