Introducción
Esenciales

Signals

Crear y manejar datos dinámicos.

In Angular, you use signals to create and manage state. A signal is a lightweight wrapper around a value.

Usa la función signal para crear una signal que mantenga el estado local:

import {signal} from '@angular/core';// Crear una signal con la función `signal`.const firstName = signal('Morgan');// Leer el valor de una signal llamandola - las signals son funciones.console.log(firstName());// Cambia el valor de esta signal llamando su método `set` con un nuevo valor.firstName.set('Jaime');// También puedes usar el método `update` para cambiar el valor// basado en el valor anterior.firstName.update(name => name.toUpperCase()); 

Angular rastrea dónde se leen las signals y cuándo se actualizan. El framework usa esta información para hacer trabajo adicional, como actualizar el DOM con nuevo estado. Esta capacidad de responder a valores de signals cambiantes a lo largo del tiempo se conoce como reactividad.

Expresiones computadas

Un computed es una signal que produce su valor basado en otras signals.

import {signal, computed} from '@angular/core';const firstName = signal('Morgan');const firstNameCapitalized = computed(() => firstName().toUpperCase());console.log(firstNameCapitalized()); // MORGAN

Una signal computed es de solo lectura; no tiene un método set o update. En su lugar, el valor de la signal computed cambia automáticamente cuando cualquiera de las signals que lee cambia:

import {signal, computed} from '@angular/core';const firstName = signal('Morgan');const firstNameCapitalized = computed(() => firstName().toUpperCase());console.log(firstNameCapitalized()); // MORGANfirstName.set('Jaime');console.log(firstNameCapitalized()); // JAIME

Usando signals en componentes

Usa signal y computed dentro de tus componentes para crear y manejar el estado:

@Component({/* ... */})export class UserProfile {  isTrial = signal(false);  isTrialExpired = signal(false);  showTrialDuration = computed(() => this.isTrial() && !this.isTrialExpired());  activateTrial() {    this.isTrial.set(true);  }}

TIP: ¿Quieres saber más sobre Angular Signals? Consulta la Guía detallada de Signals para obtener toda la información.

Siguiente paso

Ahora que has aprendido cómo declarar y manejar datos dinámicos, es momento de aprender cómo usar esos datos dentro de las plantillas.