Introducción a Angular y Fundamentos

1

Desarrolla una ToDoApp con Angular y Signals

2

Creando tu primer proyecto en Angular

3

Angular: Componentes y Rutas Básicas

4

Interpolación de Strings en Angular: Uso y Ejemplos Prácticos

5

Enlace de Propiedades HTML con Angular: Guía Práctica

6

Manejo de Eventos Click y Cambios en Angular

7

Eventos de Teclado en JavaScript: Captura y Manejo Eficiente

8

Reactividad granular en Angular: Implementación con Signals

9

Implementación de Reactividad en HTML con Signals

Estructuras de control en Angular

10

Control de Estructuras y Señales en Angular

11

Creación de listas dinámicas con JavaScript

12

Interfaz en TypeScript: Definición y Uso Práctico

13

Actualización de Arrays con Programación Inmutable en Angular

14

Uso de ngIf para Condicionales en Angular

15

Pluralización en Angular: Uso de directivas ngIf y ngSwitch

16

Formularios Reactivos en Angular: Controlando Inputs Eficazmente

17

Validaciones de Formularios en Angular: Control de Inputs

Alistando tu aplicación para producción

18

Integración de SVG en Angular para aplicaciones interactivas

19

Estilización Dinámica con Angular: Clases y Validaciones

20

Edición Dinámica de Tareas con JavaScript y CSS

21

Estados Computados con Signals en Angular

22

Persistencia de datos con localStorage en Angular

23

Compilación Angular: Optimización y Preparación para Producción

24

Despliegue de Aplicaciones en Fibers Hosting

25

Control de Flujo en Angular: Nueva Sintaxis Declarativa

26

Sintaxis de Bucle For en JavaScript Moderno

27

Migración de Sintaxis Angular: de ng-for/ng-if a Nuevas Directivas

Componentes Reutilizables y Comunicación

28

Integración de Tailwind CSS en Proyecto Angular

29

Creación y Gestión de Componentes en Angular

30

Componente Producto en Angular: Renderizado y Reutilización

31

Debugging de Apps Angular con DevTools

32

Inputs en Angular: Comunicación entre Componentes Padre e Hijo

33

Comunicación entre Componentes con Outputs en Angular

34

Maquetación de tiendas online con Tailwind CSS

Ciclo de vida de los componentes

35

Ciclo de Vida de Componentes Angular: Aprende Cada Fase Paso a Paso

36

Desarrollo de Aplicaciones con Angular: Ciclo de Vida de Componentes

37

Ciclo de Vida de Componentes en Angular: ngOnInit y Otros Eventos

38

Validación de cambios en ngOnChanges en Angular

39

Prevención de fugas de memoria con ngOnDestroy en Angular.

40

Uso de WaveSurfer.js para Crear Reproductor de Audio en Angular

41

Curso: Diseño de Interfaz con Tailwind CSS

Mejorando la interfaz del producto

42

Patrones de Diseño y Arquitectura para Aplicaciones Web

43

Creación de un Header Dinámico con Angular

44

Implementación de Side Menu en Carrito de Compras con JavaScript

45

Reactividad y Comunicación entre Componentes en Angular

46

Cálculo Total en Carrito de Compras con Angular Signals

47

Gestión de Estado en Angular: Supera el Problema del InputDrilling

48

Servicio en Angular para Estado Global del Carrito de Compras

49

Inyección de Dependencias en Angular: Uso y Buenas Prácticas

Integración y Datos

50

Conexión a APIs REST con Angular: Obteniendo y Gestionando Datos

51

Alias en TypeScript: Simplificando Imports en Proyectos Grandes

52

Uso de Pipes en Angular: Transformación de Datos Simplificada

53

Creación de Pipes Personalizados en Angular

54

Manipulación de Fechas con Date Functions en Angular

55

Directivas en Angular: Manipulación Directa del DOM

56

Despliegue de Aplicaciones Angular en Vercel: Guía Completa

Enrutamiento y Navegación

57

Página personalizable 404 con Angular: Guía paso a paso

58

Redirección con Router Link en Angular: Flujo sin Recarga Total

59

Uso de Layouts Compartidos en Angular para Estructura Sostenible

60

Uso de RouterLinkActive en Angular para Rutas Activas

61

Routing en Angular: Parámetros de URL para Detalle de Productos

62

Detalles y Renderizado de Producto con Angular

63

Galería de Imágenes Dinámica con Angular

64

Conexión de Servicios en Angular: Moneda, Carrito y Galería

Perfeccionando tu e-commerce

65

Filtrado de Productos por Categoría en Angular

66

Filtrado dinámico de productos con query params en Angular

67

Lazy Loading y Code Splitting en Aplicaciones Angular

68

Optimización de JavaScript con Dynamic Imports en Angular

69

Optimizar Angular: Preloading para Mejorar Carga en Redes Lentas

70

Migración a la Nueva Sintaxis de Angular Step-by-Step

71

Despliegue de Aplicaciones Web con Verzal Paso a Paso

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Reactividad granular en Angular: Implementación con Signals

8/71
Recursos

¿Qué es el modelo de reactividad en Angular?

El mundo del desarrollo web está en constante evolución, y Angular no es la excepción. Un aspecto crucial de Angular es su modelo de reactividad, conocido como Signals. Este modelo promete transformar la forma en que se maneja el renderizado de aplicaciones, proporcionando mayor eficiencia y precisión. Pero, ¿cómo funciona realmente esta nueva metodología?

¿Cómo funcionaba el renderizado en Angular antes de Signals?

Antes de la introducción de Signals, Angular utilizaba un enfoque diferente para el manejo de actualizaciones en el Document Object Model (DOM). El DOM es, esencialmente, un árbol jerárquico de elementos HTML en el que cualquier cambio, como un clic o un scroll, iniciaba una notificación a través de un modelo llamado Son.js. Este modelo alertaba que algo había cambiado, pero no especificaba qué. Esto obligaba a Angular a recorrer todo el árbol para localizar y actualizar el nodo específico que había sido modificado.

¿Qué propone el modelo de reactividad a través de Signals?

La llegada de Signals en Angular presenta un cambio radical hacia una reactividad granular. Este sistema se distingue porque no requiere la revisión completa del árbol del DOM. En su lugar, una señal directa indica específicamente qué elemento ha cambiado, permitiendo al motor de render de Angular actualizar solamente esa vista particular.

Ventajas de la reactividad granular:

  • Eficiencia en rendimiento: Actualiza únicamente los nodos que han cambiado sin recorrer todo el árbol.
  • Precisión en cambios: Identifica con exactitud el elemento modificado y sus dependencias.
  • Compatibilidad: Frameworks populares como QUIC, SOLID, VUE y PREREQ también adoptan este patrón.

¿Cómo funciona la API de Signals?

Para entender la API de Signals, consideremos la asignación de variables en JavaScript. Normalmente, se usa let o const para declarar una variable y se le asigna un valor. Este valor podría ser un string, número, o booleano, y puede ser leído o modificado directamente.

Transformación con Signals

Con el nuevo modelo, la asignación no es directa ni utiliza primitivas típicas. En su lugar, se crea una "caja" a través de una función llamada Signal. Esta función almacena y controla el valor interno, que puede ser accedido o modificado mediante la ejecución de funciones.

Proceso de uso de Signals:

  1. Creación: Utilizar la función Signal para crear una "caja" con un valor.
  2. Lectura: Ejecutar la función correspondiente para obtener el valor.
  3. Modificación: Emplear métodos específicos para cambiar los datos dentro de la "caja".

Ventajas específicas de Signals

Un elemento clave de Signals es su capacidad para funcionar como una "bombilla" que alerta al motor de render cualquier cambio en los elementos. Esto significa que el sistema de render conoce exactamente qué ha sido modificado y optimiza la actualización del DOM.

Implementación de Signals en Angular

Ahora que conocemos la teoría, el siguiente paso es aplicarla en la práctica. Implementar Signals en Angular puede parecer algo abstracto al inicio, pero con la práctica, se vuelve intuitivo y beneficioso en proyectos grandes o complejos.

Recomendaciones para los desarrolladores

  • Explora y experimenta: Prueba cómo Signals afecta el flujo y eficiencia de tus aplicaciones.
  • Compara con métodos anteriores: Analiza las diferencias en rendimiento y precisión.
  • Forma parte de la comunidad: Interactúa con otros desarrolladores que están implementando Signals y comparte experiencias.

Ánimo en tu camino de aprendizaje con Angular y Signals. Este nuevo enfoque promete un futuro más eficiente y preciso en el desarrollo web. ¡Continúa explorando y aprendiendo!

Aportes 10

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Angular Signals es un sistema que rastrea de forma granular cómo y dónde se usa su estado en una aplicación, lo que permite que el marco optimice las actualizaciones de renderizado.

¿Qué son las signals?
Una signal es un envoltorio alrededor de un valor que notifica a los consumidores interesados ​​cuando ese valor cambia. Las signals pueden contener cualquier valor, desde primitivas simples hasta estructuras de datos complejas.

El valor de una signal se lee llamando a su función getter, que permite a Angular rastrear dónde se utiliza la signal.

Las signals pueden ser de escritura o de sólo lectura.

no se si es mi pc pero cuando realizo cambios en el codigo no se reflejan en muchas ocasiones en el front y me toca reiniciar el servidor... esto desde la instalacion de angular 17
Super interesante esto de signals, es primera vez que interactúo con un lógica como esta !
Justo hace unas semanas revisaba este tema pero para React. Se menciona que en React que cuando no trabajas con variables primitivas debes de tener cuidado cómo gestionas el estado ya que puede generar conflictos o reducir el rendimiento de la aplicación. ¿Por qué pasa esto en React y no en Angular al trabajar la Reactividad con variables no primitivas? Encontré esto: La diferencia en la gestión de estado y reactividad entre React y Angular se debe a cómo cada framework maneja la reactividad y las referencias a objetos no primitivos (como arrays y objetos) en su flujo de trabajo. ### React: Inmutabilidad y Referencias En React, la reactividad está fuertemente ligada al concepto de **inmutabilidad** y cómo el framework detecta cambios en el estado para re-renderizar componentes. * **Inmutabilidad**: React utiliza la referencia de las variables para determinar si un componente debe ser re-renderizado. Si cambias directamente el contenido de un objeto o array (mutación), la referencia no cambia, y React no detectará que hubo un cambio, por lo que el componente no se actualizará. * **Ejemplo**: Si usas `array.push()` para añadir un elemento a un array en el estado, React no detectará el cambio porque la referencia del array sigue siendo la misma. * **Problemas de Rendimiento**: Si no se sigue el patrón de inmutabilidad, React podría perder actualizaciones necesarias o incluso desencadenar re-renderizados innecesarios, afectando negativamente el rendimiento. Es por eso que en React, cuando trabajas con objetos o arrays, es común crear una nueva referencia mediante métodos como `concat()`, `slice()`, o el operador de propagación (`...`), para que React detecte que algo ha cambiado. ### Angular: Cambio de Detección y Observables Angular maneja la reactividad de una manera diferente debido a su mecanismo de **detención de cambios** y el uso de **observables**. * **Detección de Cambios**: Angular realiza un proceso de detección de cambios (Change Detection) donde compara el estado del modelo de datos con el DOM. Angular se basa en un ciclo de detección que detecta cambios tanto en las variables primitivas como en las no primitivas, incluso si la referencia no cambia. * **Ejemplo**: En Angular, si mutas un array directamente, Angular detecta el cambio debido a su estrategia de detección de cambios, y el componente se actualizará automáticamente. * **Reactividad con Observables**: Angular también utiliza observables y RxJS para gestionar la reactividad de manera declarativa. Esto permite manejar flujos de datos asincrónicos y complejos sin preocuparse tanto por la inmutabilidad. ### Resumen de las Diferencias * **React**: Depende de la inmutabilidad y referencias para la reactividad. Los cambios de estado en objetos no primitivos deben crear nuevas referencias para que React los detecte. Esto hace que sea importante gestionar adecuadamente el estado para evitar problemas de rendimiento. * **Angular**: Utiliza detección de cambios, que no depende de la inmutabilidad de las referencias de objetos. Angular puede detectar mutaciones en objetos y arrays incluso sin cambiar la referencia, lo que simplifica la gestión del estado, aunque puede tener un costo de rendimiento si no se gestiona adecuadamente.
Angular introdujo **Signals** en la versión **v16**, lanzada en mayo de 2023
Angular Signals es un nuevo modelo de reactividad en Angular que permite actualizaciones más eficientes de la interfaz de usuario. A diferencia del modelo anterior, que recorría todo el DOM para identificar cambios, Signals proporciona reactividad granular. Cuando un elemento desencadena un evento, envía una señal que notifica directamente al motor de render de Angular, permitiendo la actualización solo del nodo afectado y sus dependencias, sin necesidad de recorrer el árbol completo. Esto mejora el rendimiento y simplifica el manejo de cambios en la UI.
El modelo de reactividad en Angular llamado Signals permite una actualización más eficiente del DOM. A diferencia del modelo anterior, que necesitaba recorrer todo el árbol de componentes, Signals permite identificar exactamente qué elemento ha cambiado, enviando una señal directa al motor de render. Esto se traduce en una reactividad granular, donde solo se actualizan las vistas afectadas. Para crear y gestionar estos Signals, se utilizan funciones específicas en lugar de variables estándar, lo que optimiza la gestión del estado y mejora el rendimiento de las aplicaciones Angular.
Les recomiendo revisar la documentación de Angular al respecto: <https://angular.dev/guide/signals>
Excelente explicación, la mejor manera de tenerlo en cuenta para nuestras siguientes clases