CLASE DEFINITIVA de ANGULAR: Detección de cambios + OnPush como NUNCA lo viste 😎 en CÓDIGO !
¡Bienvenidos a la clase definitiva de Angular sobre la detección de cambios y el uso del enfoque OnPush como nunca antes visto! En este artículo, exploraremos en profundidad estas dos funcionalidades clave de Angular y veremos ejemplos de código detallados sobre cómo implementarlas en tus proyectos.
¿Qué es la detección de cambios en Angular?
La detección de cambios en Angular es el proceso mediante el cual Angular verifica si ha habido algún cambio en los componentes y sus datos internos. Esto permite al framework actualizar la interfaz de usuario según corresponda y mantenerla sincronizada con los cambios en los datos subyacentes.
La detección de cambios puede ser realizada de dos formas:
- Detección de cambios por defecto: Angular revisa constantemente todos los componentes y sus datos asociados en busca de cambios.
- Detección de cambios utilizando el enfoque OnPush: aquí, se puede definir que un componente solo se actualice cuando sus datos de entrada cambien o cuando se dispare un evento proveniente de él.
El enfoque OnPush en Angular
El uso del enfoque OnPush ofrece diversos beneficios en términos de rendimiento y eficiencia. Al utilizar este enfoque, Angular solo realizará la detección de cambios en un componente cuando sus datos de entrada cambien o cuando se dispare un evento desde el propio componente. Esto significa que Angular no revisará constantemente el componente en busca de cambios si no es necesario.
Para habilitar el enfoque OnPush en un componente, se debe añadir el decorador @Component
y establecer el cambio de detección en el valor ChangeDetectionStrategy.OnPush
. Esto le indica a Angular que solo realice la detección de cambios cuando sea necesario.
@Component({
selector: 'app-my-component',
templateUrl: './my-component.component.html',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class MyComponent {
// Lógica y propiedades del componente
}
Ejemplo de implementación
Veamos un ejemplo práctico de cómo implementar el enfoque OnPush en Angular.
// my-component.component.ts
import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
@Component({
selector: 'app-my-component',
templateUrl: './my-component.component.html',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class MyComponent {
@Input() userInput: string;
public result: string;
onClick(): void {
this.result = this.formatInput(this.userInput);
}
private formatInput(input: string): string {
// Lógica para formatear el texto de entrada
return input.toUpperCase();
}
}
En este ejemplo, el componente MyComponent
tiene una propiedad de entrada userInput
que se actualizará desde otro componente. Cuando se haga clic en un botón, se llamará a la función onClick
y se actualizará la propiedad result
utilizando la función formatInput
. Como el enfoque OnPush está habilitado, Angular solo realizará la detección de cambios cuando se actualice la propiedad userInput
.
Conclusión
En resumen, la detección de cambios y el enfoque OnPush son dos conceptos clave en Angular que permiten mantener la interfaz de usuario actualizada y optimizar el rendimiento de la aplicación. Al utilizar el enfoque OnPush, podemos mejorar la eficiencia de nuestra aplicación al evitar la detección innecesaria de cambios. Esperamos que esta clase definitiva haya proporcionado una visión clara y ejemplos útiles sobre cómo implementar la detección de cambios y el enfoque OnPush en Angular.
Hola Alan, se puede usar signals para enviar la variable text al componente hijo de dashboard? O se debe hacer con @input siempre? No se si lo del @inout fue para explicar el change detection. Me queda esa duda de cuando usar signals. Saludos
buen video, gracias
Pero hay algo que no entiendo, tu dijistes que si un parametro de entrada cambiaba, abia un trigger automatico. Nose porque isistes detectChanges() !
Me encanta tu manera de explicar! 👌
Muchas gracias por compartir y como siempre digo, aprender contigo es un placer!
Ya estoy esperando el siguiente video!🧑💻
Mil gracias por la explicación 🤙
Gracias , ando esperando la próxima parte de react y viendo un poquito como trabaja angular , gracias por los videos y por los concejos que nos das a veces en directo y por todo lo que haces para traer este material con una cálidas tremenda👑❤
excelente contendo solo una nota, existe el classic pattern to fetch data donde el unsubscribe es imperativo y el reactive pattern que de acuerdo con el libro de Chebbi Lamis, mejora el performance cuando se usa con el change detection strategy on pus, esto suele suceder en tres situaciones
1. Input property ha cambiado
2. un Event hanlder ha emitido un nuevo valor
3. y cuando un observable via async pipe ha emitido un nuevo valor
excelente repaso alan
Mi maestro muchas gracias👍👍
Excelente, muchas gracias