¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
dev
Eider Ogueta Hace 18 minutos Cargando comentarios…
La reactividad en Angular es el proceso mediante el cual el framework determina que el estado de la aplicación ha cambiado y, si es necesario, refresca la vista o el DOM. Si has leído el artículo Estrategia de detección de cambios, la magia de Angular sabrás que Angular basa esta detección en un árbol de componentes y en mecanismos como NgZone o ChangeDetectionStrategy para controlar cuándo y cómo se actualiza la UI.
Hoy vamos a ir un paso más allá: veremos cómo Angular Signals, la nueva API de reactividad en Angular introducida de forma experimental en Angular 16, permite mejorar la eficiencia de la UI, actualizar solo lo necesario y simplificar la gestión del estado en componentes Angular, optimizando el rendimiento de tus aplicaciones.
En el enfoque tradicional:
Por ejemplo, en el artículo anterior creamos un reloj que se actualiza cada segundo y una tabla de usuarios. La actualización del reloj disparaba un ciclo completo de detección de cambios Angular, recalculando valores aleatorios en cada fila, aunque no hubieran cambiado los datos.
Con Angular Signals:
Esto convierte a Signals en una herramienta clave para mejorar el rendimiento en Angular, especialmente en aplicaciones grandes con listas y componentes complejos.
Para entenderlo mejor, veamos cómo funcionan los Signals en Angular.
import { signal } from '@angular/core';
const counter = signal(0);
Los efectos son funciones que se ejecutan automáticamente cuando los signals que usan cambian.
import { signal, effect } from '@angular/core';
const counter = signal(0);
effect(() => {
console.log(`El contador vale ${counter()}`);
});
counter.set(1); // Se ejecuta el effect y muestra “El contador vale 1”
Puedes derivar un valor de uno o varios signals sin necesidad de reescribir lógica adicional.
import { computed } from '@angular/core';
const double = computed(() => counter() * 2);
Además de lo que hemos visto, Angular Signals tiene varias características importantes según la documentación oficial:
const counter = signal(0);
const double = computed(() => {
console.log('Recalculando...');
return counter() * 2;
});
Angular trackea solo los signals que realmente se leen dentro de un computed o effect.
const show = signal(false);
const counter = signal(0);
const conditional = computed(() => show() ? counter() : 0);
{{ counter() }}
Permite leer un signal sin que se registre como dependencia dentro de un effect o computed.
effect(() => {
console.log(`User set to ${currentUser()} and the counter is ${untracked(counter)}`);
});
En lugar de mostrar todo el código aquí, hemos preparado un ejemplo interactivo en StackBlitz para que puedas ver Angular Signals funcionando en tiempo real.
En este ejemplo podrás observar:
Prueba el ejemplo en vivo en StackBlitz.
| Antes (Default CD) | Ahora (Signals) |
|---|---|
| Ciclo completo de detección de cambios cada segundo | Solo se actualiza lo que depende de un signal |
| randomId se recalculaba innecesariamente | randomId permanece estable |
| Necesidad de OnPush para optimizar | No se necesita OnPush ni ChangeDetectorRef |
| Rendimiento afectado con muchas filas | Rendimiento constante aunque la hora cambie |
Angular Signals representa la evolución del modelo de detección de cambios explicado en nuestro artículo anterior.
Antes, cualquier evento asíncrono podía disparar un ciclo completo de detección de cambios. Ahora, Angular actualiza solo los bindings que dependen de los signals que cambian, evitando cálculos innecesarios y mejorando la eficiencia.
Con Signals y valores derivados (computed), podemos construir aplicaciones más rápidas, predecibles y fáciles de mantener, especialmente cuando el árbol de componentes crece.
Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Cuéntanos qué te parece.