Migración de Outputs en Angular: De Decoradores a Funciones
Clase 12 de 36 • Curso de Angular Avanzado
Contenido del curso
- 7

Buenas prácticas con variables locales en Angular
09:14 - 8

Optimización de Imágenes en Angular con NG Optimizate Image
17:08 - 9

Optimización de Rutas Amigables para SEO en Angular
11:27 - 10

"Reactividad en Angular: Migración a Input Signals"
20:42 - 11

Migración de Inputs a Signals en Angular: Mejora de Rendimiento y Flujo
12:24 - 12

Migración de Outputs en Angular: De Decoradores a Funciones
07:35 - 13

Primitivas reactivas de Angular: Uso de Linked Signal y Computed
12:56 - 14

Sincronización de Componentes en Angular con Model y Signals
12:03 - 15

Interoperabilidad de RXJS y Signals en Angular
11:18 - 16

Conversión de Observables a Signals en Angular con toSignal
08:07 - 17

Interoperabilidad de RXDS y Signals en Angular: Uso de RX Resourcers
11:10 - 18

Manejo de Parámetros Reactivos con RX Resource en Angular
09:18 - 19

Manejo de Promesas y Fetch en Angular sin RXJS
07:59 - 20

Reactividad en Angular: Uso de Signals para Consultas DOM
09:00 - 21

Configuración de Prettier para HTML en Angular
05:28 quiz de Nuevas Funcionalidades en Angular
- 22

Server Side Rendering en Angular: Builders y Migración
10:17 - 23

Server Side Rendering con Angular: Mejora Rendimiento y SEO
13:26 - 24

Manejo de APIs del Navegador con Angular: Uso de AfterNextRender
09:43 - 25

Geolocalización y APIs: Creando un Mapa de Tiendas Cercanas
15:39 - 26

Habilitar Pre-rendering en Angular para Generación de Sitios Estáticos
11:26 - 27

Despliegue de Aplicaciones Node.js con App Fiber Hosting
18:12 quiz de Server-Side Rendering (SSR) y Navegación
- 28

Generación de Meta Tags Dinámicos con Angular y Open Graph
15:11 - 29

Creación de MetaTags Dinámicos en Angular
12:51 - 30

Proceso de Hydration y Event Replay en Angular
05:54 - 31

Implementación de Productos Relacionados en Angular eCommerce
09:26 - 32

Carga diferida de componentes en Angular para mejorar rendimiento
10:10 - 33

Optimización de Incremental Hydration en Angular
06:14 - 34

Configuración de Server Routing en Angular
10:43 - 35

Aplicaciones Sin Zone.js: Migración a Signals en Angular
13:02 - 36

Despliegue y Reactividad Avanzada en Angular
00:53
La evolución de Angular continúa con cambios significativos en sus APIs, especialmente en la forma de manejar los outputs en los componentes. Estos cambios buscan alinear la sintaxis y hacer más coherente el desarrollo, siguiendo la misma línea que los recientes cambios en los inputs. Veamos cómo implementar estos cambios y qué beneficios nos aportan.
¿Cómo ha cambiado la API de outputs en Angular?
A diferencia de los inputs que ahora utilizan un SignalInput, los outputs han cambiado en su forma pero no en su esencia. El cambio principal es que ahora se manejan como funciones en lugar de decoradores, siguiendo la misma línea de los inputs para mantener una coherencia en el código.
Es importante destacar que este cambio es principalmente de sintaxis y no de funcionalidad. Angular está alineando todas sus APIs para seguir un mismo patrón, haciendo que el código sea más declarativo y consistente.
¿Cómo implementar el nuevo formato de outputs?
Para implementar el nuevo formato de outputs, debemos seguir estos pasos:
- Eliminar el decorador
@Output() - Importar la función
outputdesde@angular/core - Reemplazar la declaración con la nueva sintaxis
Veamos un ejemplo práctico:
Antes (con decorador):
@Output() addedProduct = new EventEmitter<Product>();
Ahora (con función):
addedProduct = output<Product>();
Como podemos observar, la sintaxis es mucho más limpia y directa. Ya no necesitamos importar ni utilizar EventEmitter, lo que simplifica nuestro código.
¿Qué tipos de datos podemos emitir con los outputs?
Con la nueva API, podemos especificar claramente qué tipo de datos queremos emitir:
- Para emitir un tipo específico:
output<TipoEspecífico>() - Para emitir un string:
output<string>() - Para no emitir ningún dato (solo notificar):
output<void>()
Esta última opción es particularmente útil cuando solo necesitamos notificar al componente padre sobre un cambio de estado sin enviar datos adicionales.
¿Cómo migrar automáticamente los outputs en proyectos existentes?
Si tienes un proyecto grande con muchos componentes que utilizan outputs, Angular proporciona una herramienta de migración automática, similar a la que existe para los inputs.
La migración automática permite:
- Analizar todo el código de tu aplicación
- Identificar todos los outputs que utilizan el formato antiguo
- Convertirlos automáticamente al nuevo formato
- Mantener la funcionalidad sin cambios
Para ejecutar esta migración, Angular proporciona un comando específico que puedes encontrar en la documentación oficial de migraciones disponibles.
¿Por qué Angular está realizando estos cambios?
Estos cambios forman parte de una estrategia más amplia de Angular para:
- Mejorar la coherencia: Alinear todas las APIs para que sigan patrones similares
- Simplificar el desarrollo: Reducir la cantidad de importaciones y código repetitivo
- Preparar el terreno para futuras mejoras: Estos cambios facilitan la implementación de nuevas características
Es importante destacar que aunque los outputs ahora se declaran como funciones, no son SignalOutputs como podría pensarse por analogía con los inputs. Se trata simplemente de un cambio en la forma de declaración para mantener la coherencia en el código.
La evolución de Angular hacia APIs más declarativas y consistentes demuestra el compromiso del framework con la mejora continua y la experiencia del desarrollador. Estos cambios, aunque pueden requerir un esfuerzo inicial de adaptación, simplifican el código y hacen que el desarrollo sea más intuitivo a largo plazo. ¿Has implementado ya estos cambios en tus proyectos? Comparte tu experiencia en los comentarios.