Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Angular 17 introduce un enfoque innovador para gestionar las entradas de componentes usando signals, mejorando significativamente la flexibilidad y eficiencia de las aplicaciones en Angular. Esta guía explorará los aspectos clave de los signal inputs, sus beneficios y ejemplos prácticos para ayudarte a aprovechar esta característica de manera efectiva.
Los signal inputs en Angular 17 reemplazan el decorador tradicional @Input()
con un enfoque más reactivo y declarativo. Un signal es un tipo especial de observable que proporciona una manera limpia y eficiente de manejar los cambios de entrada dentro de los componentes de Angular. A diferencia de las entradas regulares, los signal inputs no requieren hooks de ciclo de vida como OnChanges
para detectar cambios.
computed
y effect
, puedes derivar valores y ejecutar efectos secundarios cuando cambian las entradas sin necesidad de verificar manualmente los cambios.OnPush
, los signal inputs marcan automáticamente el componente como sucio cuando una entrada cambia, asegurando que la vista se actualice de manera eficiente.Aquí hay una comparación práctica entre el uso tradicional de @Input()
y los nuevos signal inputs:
@Component({
selector: 'normal-input-component',
template: `<div>{{ doubleCount }}</div>`,
})
export class NormalInputComponent implements OnChanges {
@Input() count = 0;
doubleCount = 0;
ngOnChanges(changes: SimpleChanges): void {
if (changes['count']) {
this.doubleCount = this.count * 2;
}
}
}
@Component({
selector: 'signal-input-component',
template: `<div>{{ doubleCount() }}</div>`,
})
export class SignalInputComponent {
count = input.required<number>();
doubleCount = computed(() => this.count() * 2);
}
En el ejemplo de signal input, el valor doubleCount
se recalcula automáticamente cada vez que la entrada count
cambia, sin necesidad del hook OnChanges
.
computed
, puedes derivar valores de otros signals. Esto proporciona una manera reactiva de manejar el estado derivado dentro de tus componentes.effect
permite ejecutar efectos secundarios cuando un signal cambia. Esto puede reemplazar la necesidad de OnChanges
y otros hooks de ciclo de vida similares, simplificando la lógica de tu componente.setInput
en la referencia del componente. Este enfoque asegura que tus pruebas reflejen con precisión cómo se comporta el componente con diferentes valores de entrada.Los signal inputs en Angular 17 ofrecen una manera moderna y eficiente de manejar las entradas de componentes, mejorando tanto el rendimiento como la experiencia del desarrollador. Al adoptar esta nueva característica, puedes escribir código más declarativo, seguro en tipos y reactivo. Ya sea que estés construyendo nuevos componentes o refactorizando los existentes, esta nueva herramienta te proporcionan una solución robusta para gestionar datos de entrada en aplicaciones Angular.