Input Signals en #Angular 17.1 - ¿Cómo usarlos?
Summary
TLDREste video explica las nuevas características de los input signals introducidos en Angular 17.1, que prometen cambiar la forma de programar reactivamente. Se destaca cómo solucionar problemas con los decoradores @Input anteriores y se muestra cómo utilizar los input signals, aprovechando sus beneficios como la reactividad automática, los alias, las transformaciones de datos y la compatibilidad con la configuración anterior. Además, se menciona que los ciclos de vida podrían ser reemplazados por el effect para el manejo de cambios en los signals. En resumen, es una completa guía sobre esta nueva funcionalidad que optimizará el desarrollo en Angular.
Takeaways
- 📍 Angular 17.1 introduce los 'input signals', un nuevo enfoque para manejar las propiedades de entrada en los componentes de forma reactiva.
- 😐 Los decoradores @Input tradicionales tienen limitaciones y no son completamente reactivos, lo que puede causar problemas.
- 😃 Los 'input signals' convierten las propiedades de entrada en señales reactivas, lo que facilita el manejo de cambios y mejora el rendimiento.
- 🆕 Para utilizar 'input signals', se importa 'input' desde '@angular/core' y se declara la propiedad como un InputSignal con una configuración opcional.
- 🚫 Con 'input signals', ya no es necesario utilizar los decoradores @Input para las propiedades de entrada.
- ✨ Los 'input signals' permiten una configuración adicional, como establecer aliases, validaciones, transformaciones y más.
- 🔄 El método 'ngOnChanges' sigue funcionando con los 'input signals', pero se espera que sea reemplazado por 'effect' en el futuro.
- ⚠️ Los 'input signals' aún están en developer preview y no se recomiendan para producción por el momento.
- 🥇 Se mencionó un sorteo de un curso para los suscriptores del canal, que se realizará mediante los comentarios en este video.
- 📢 Se alienta a los espectadores a compartir, dar like y comentar el video para participar en el sorteo del curso.
Q & A
¿Qué son los input signals en Angular 17?
-Los input signals son una nueva funcionalidad introducida en Angular 17.1 que permite tratar los inputs como señales reactivas, facilitando la programación reactiva y eliminando la necesidad de utilizar decoradores @Input.
¿Cuál era el problema con los decoradores @Input antes de Angular 17.1?
-Antes de Angular 17.1, los inputs decorados con @Input no eran reactivos por sí mismos, lo que dificultaba la actualización automática de las propiedades dependientes cuando el input cambiaba.
¿Cómo se define un input signal en Angular 17.1?
-Para definir un input signal, se utiliza la sintaxis `@Input() nombrePropiedad = inputSignal(valorInicial)`, importando `inputSignal` desde `@angular/core`.
¿Qué ventajas ofrecen los input signals en comparación con los decoradores @Input?
-Los input signals ofrecen una programación reactiva más sencilla, ya que se actualizan automáticamente cuando su valor cambia, sin necesidad de implementar lógica adicional. Además, son más compatibles con la programación funcional y pueden simplificar el código.
¿Se pueden configurar los input signals de alguna manera?
-Sí, los input signals permiten configurar opciones como `required` para hacerlos obligatorios, `alias` para cambiar su nombre y `transform` para transformar su valor antes de asignarlo.
¿Qué alternativas existían antes de los input signals para manejar inputs reactivos?
-Antes de los input signals, era necesario envolver los inputs en señales manuales, utilizando patrones como `inputSignal$ = signal(initialValue)` o `@Input() set inputProperty(value: number) { this.inputSignal.set(value); }`.
¿Qué impacto tendrán los input signals en el ciclo de vida de los componentes de Angular?
-Se espera que los input signals reduzcan la necesidad de utilizar los ciclos de vida tradicionales de Angular, como ngOnChanges, ya que las propiedades dependientes se actualizarán automáticamente cuando los inputs cambien.
¿Se pueden combinar input signals y decoradores @Input en un mismo componente?
-Sí, es posible utilizar input signals y decoradores @Input en un mismo componente, aunque se espera que los input signals reemplacen gradualmente a los decoradores @Input.
¿Qué otras características relacionadas con la programación reactiva se esperan en futuras versiones de Angular?
-Se menciona que Angular parece estar enfocándose más en la programación funcional, por lo que se esperan más características relacionadas con efectos y la gestión de señales en futuras versiones.
¿Qué consejo se da sobre el uso de input signals en producción?
-Se advierte que, aunque los input signals están disponibles en Angular 17.1, todavía se encuentran en fase de "developer preview", por lo que no se recomienda su uso en producción por el momento, sino más bien para experimentar y familiarizarse con la nueva funcionalidad.
Outlines
🔍 Angular 17 y la Reactividad con Input Signals
Este segmento introduce Angular 17.1 y su nueva funcionalidad de 'input signals' que promete cambiar la forma de programar reactivamente, solucionando problemas con el manejo de inputs reactivos. Se presenta un problema común con los inputs y se explica cómo antes de Angular 17.1 se solucionaba mediante el uso de setters y el patrón ngOnChanges. Luego, se muestra cómo Angular 17.1 simplifica este proceso al introducir 'input signals', permitiendo que los inputs sean reactivos y actualicen la UI automáticamente sin necesidad de métodos adicionales. Se destaca la importancia de esta actualización para hacer el desarrollo más intuitivo y eficiente.
🛠 Mejoras y Flexibilidad en Angular 17 con Input Signals
Este párrafo profundiza en las capacidades avanzadas de los 'input signals' en Angular 17, destacando su compatibilidad y flexibilidad mejoradas. Se explica cómo se pueden hacer inputs requeridos, cambiar aliases y realizar transformaciones de datos de manera sencilla, lo que refleja un enfoque más funcional de Angular. Además, se menciona la compatibilidad con ciclos de vida existentes y se anticipa un cambio hacia un enfoque basado en signals. Finalmente, se promueve la participación de la comunidad a través de un sorteo, incentivando la interacción y el feedback sobre estas nuevas características.
🎁 Invitación a Participar y Aprender con Angular
El último segmento se enfoca en la invitación a la audiencia para participar en un sorteo de un curso, como agradecimiento por el apoyo al canal y para fomentar el aprendizaje continuo. Se hace énfasis en la importancia de aprovechar las nuevas funcionalidades de Angular para mejorar las habilidades de desarrollo y se anima a la comunidad a participar activamente en la discusión y el intercambio de conocimientos.
Mindmap
Keywords
💡Input Signals
💡Señales computadas
💡Reactivo
💡Decoradores
💡Requerido
💡Alias
💡Transform
💡Inferencia de tipos
💡LifeCycle Hooks
💡Effect
Highlights
Angular 17.1 introduce los input signals, que cambiarán la forma de programar reactivamente.
Los input signals reemplazan la necesidad de usar decoradores @Input para hacer las propiedades reactivas.
Con input signals, se puede convertir una propiedad en reactiva usando `input: InputSignal` de `@angular/core`.
Los input signals soportan la propiedad `required` para hacer la propiedad obligatoria.
Se puede cambiar el alias de la propiedad con la opción `alias` en la configuración del input signal.
La opción `transform` permite transformar el valor del input signal antes de asignarlo.
Los input signals son compatibles con la API de inputs anterior, por lo que se pueden seguir utilizando mientras están en developer preview.
El uso de `ngOnChanges` para detectar cambios en inputs signals funcionará de momento, pero eventualmente se utilizará `effect` en su lugar.
Se mencionó un sorteo de un curso para los suscriptores del canal al llegar a 1000, pero no se pudo hacer por limitaciones técnicas.
Como alternativa, se hará el sorteo del curso entre los comentarios de este video.
Transcripts
Hola y bienvenidos de nuevo a este canal
hoy vamos a estar viendo algo nuevo que
nos está trayendo angular 17 exactamente
a partir de la versión
17.1 estamos hablando de los input
signals que posiblemente van a cambiar
muchas cosas Al momento de programar
reactivamente primero vamos a ver un
posible problema con los decoradores
inputs Y cómo es que en ciertas formas
no nos beneficia esta
implementación aquí como podemos ver
tenemos una aplicación muy básica en la
cual está compuesta por un comp ente que
recibe un número o un Counter en este
caso que es el input y en base a este
número y lo que ingresemos en esta caja
de texto en este input va a cortar el
nombre de la persona en la eh posición
digamos que le vamos a pasar por el
counter No si pueden ver aquí ya tenemos
este eh comper Signal que lo que se está
encargando es cada vez que haya valor en
el query va a ser un slce comenzando en
cero y terminando en el counter que es
el input que está recibiendo ahora en el
input pues tenemos esta este método para
cambiar el valor del query no a través
de lo que vamos ingresando en el input
html que tenemos aquí no y muy bien
básicamente Pues estamos pasando el
input desde un componente padre y
podemos actualizarlo con este botón
vamos a ver cómo funciona si yo pongo mi
nombre completo Carlos Morales vamos a
ver que va a comenzar a contar 0 1 do
Perdón 1 2 3 4 y 5 y ahí lo va a dejar
ya no va a permitir que siga eh digamos
mostrando el valor restante no Por qué
Porque lo está cortando cuando llegue a
5co muy bien pero si ahora yo actualizo
el counter como pueden ver aquí Se está
actualizando Y es más si yo hago acá un
engine changes va obviamente va a ver se
va a ver que pues su valor está
aumentando está cambiando pero como
pueden ver la propiedad shorted name el
Signal computed no está cambiando esto
es porque los input no son reactivos
Obviamente si fuera un Signal Pues sí Y
esta es justamente la forma que vamos a
usar nosotros para arreglarlo esto se
hacía me antes de esta versión 17.1 no
cómo lo podemos arreglar Bueno podemos
usar hacer dos eh hacer dos formas para
convertir digamos este Counter en un
Signal la primera podría ser un el enon
changes o lo más habitual el patrón más
habitual que generalmente se usa es
Poner este input como si fuera un set y
Dentro de este set agregar un s fin
vamos a hacerlo para esto vamos a
convertir este Counter en un setter va a
recibir aquí un valor le vamos a decir
que es numérico y Aquí vamos a crear un
Signal vamos a decirle Signal Ah y
cuando el input counter se actualice o
Recibe un nuevo valor va a setear en el
value ese valor muy bien y ahora vamos
aquí al Counter y le vamos a cambiar por
el Signal que hemos creado como pueden
ver ahora si yo pongo mi
nombre pueden ver que sigue funcionando
igual porque el valor el value es Signal
es cco si nosotros lo actualizamos vamos
a ver que pues esto comienza a funcionar
ya de la manera que estamos esperando no
El Counter o el valor es número es 13 y
comienza a cortar a partir del C y el 13
y como pueden ver pues está funcionando
Por qué Porque ahora pues esto sí ya es
totalmente reactivo
esto era antes de la versión 17.1 pero a
partir de la versión 17.1 como pueden
ver aquí en el package Jason angular ha
introducido lo que son los input signals
Cómo cambia Esto bueno vamos a comentar
brevemente por aquí esto de acá para que
no lo
perdamos y lo único que tendríamos que
hacer sería poner
Counter y le vamos a decir que va a ser
igual a input
Okay ahora me está diciendo aquí que no
encuentra input De dónde viene este
input bueno viene de el mismo Core des
angular Core y con esto solamente con
esto vamos a quitarle por momento esto
de acá solamente con esto ya le
estaríamos diciendo que Counter es un
input Signal no bueno es de tipo un n
porque pues no sabe qué es y tampoco
tiene un valor no pero vamos a decirle
que es de tipo numérico y pues en este
caso vamos eh a inicializar con cero no
ahora acá Se está quejando porque dice
sabes que no no no encuentro este
Counter obviamente porque lo hemos he
quitado no Y ahorita si yo guardo pues
como pueden ver ya está funcionando de
nuevo ahora voy a agregar de nuevo mi
nombre y vamos a actualizar este Counter
y como pueden ver ya está funcionando
Por qué Porque este Counter ahora es un
Signal no y es algo muy interesante que
Como he mencionado eh va a cambiar mucho
la forma en la cual vamos a estar
programando ahora con angular es más ya
no vamos a hacer uso de nuestro
decoradores @input y quién sabe si más
adelante vamos a seguir usando eh para
otras cosas también los decoradores
parece que un poco se enf está enfocando
en ser más funcional angular Pero bueno
todavía no se sabe el destino que va a
est tomando pero lo interesante de esto
es de que eh trae muchas eh Mejor dicho
es muy compatible con todas las cosas
que anteriormente se podían hacer con
los input que haí si por ejemplo
nosotros necesitamos eh tener este
required Bueno lo que podemos hacer aquí
después del input es poner un punto y
como pueden ver acá Hay ciertos métodos
pero también trae el método required de
esta forma en de esta forma pues ya nos
aseguramos de que sea requerido y acá Se
está quejando nos está diciendo sabes
queé Oye tienes un error Por qué Porque
básicamente si nosotros decimos que es
requerido ya no necesitamos inicializar
porque sabemos que sí o sí tienen que
enviarlo desde el componente padre No
desde esta parte de acá Así que ahora
tenemos nuestro input input de forma
requerida no muy bien pero qué pasa si
nosotros ne neces estamos de repente
cambiarle eh el alias bueno para esto
también puede recibir un objeto de
configuración en el cual si nosotros
vemos vamos a ver que puede recibir el
alias vamos a cambiárselo a bwe por
ejemplo y en este caso nos diría Oye ya
no existe el counter ahora existe el
valve como pueden ver todo sigue
funcionando porque lo hemos renombrado y
también aquí acepa eh la propiedad
transform que nos va a permitir
transformar nuestro valor de repente
nosotros necesitamos enviar este Counter
pero por x motivo que queremos
multiplicarlo por dos Entonces vamos a
recibir una función en el cual va a
recibir el valor eso lo podríamos hacer
dentro de nuestro componente o aparte no
y vamos a decirle sabes qué vamos a
retornar value por por dos no y de esta
forma pues ya tendríamos alterado Por
así decirlo nuestro eh input No aquí y
me está dando este error porque bueno
básicamente voy a formatear aquí para
que se vea un poquito mejor nos está
diciendo que el tipo Eh bueno esta
función no es asignable undefine it Y
esto es porque cuando nosotros agregamos
ese transform tranquilamente esto podría
ser eh Mejor dicho el valor como va a
cambiar podría ser otro tipo de dato por
ejemplo aquí nosotros podríamos poner
que sea que devuelva un String pero lo
que necesitamos de hacer es decirle
sabes que también es tipo numérico no
entonces agregando eso también ya
funcionaría no Y como pueden ver aquí si
yo pongo mi nombre voy a ponerlo
completo porque se supone que ahora
debería multiplicarlo por 10 para que lo
corte y bueno como pueden ver no eh 5
por eh por 2 10 no en este caso pues
está funcionando acá si yo lo actualizo
pues va incrementando No ahora sería 12
Entonces eh pero también aquí nosotros
podríamos omitir esto y automáticamente
esto lo infiere no y ya sabe que pues va
a recibir un un número y también va a
devolver un número no entonces esto es
muy interesante de todas formas el el
Api con los input que teníamos
anteriormente si ustedes están
utilizándolo no se preocupen porque van
a poder seguir utilizando eh ojo que
todavía sigue en developer preview Así
que con mucho cuidado todavía no es
recomendable que lo hagan para
producción lo pueden s usar para
experimentar algo más que quería
mencionar antes de que acabe este video
es que pues si bien cierto nosotros
tenemos el engine change para poder eh
ver cuando está cambiando nuestros
inputs también funciona con este en este
caso eh lo que vendría a ser los input
signals pero A mi parecer eso va a ser
por el momento Ah acá sería Counter
perdón porque teóricamente cuando vengan
los
eh componentes basados en signals van a
dejar de ser utilizados estos eh ciclos
de vida que tiene angular no y van a
estar más enfocados en por ejemplo el e
no que es para ir debug Por así decirlo
cada vez vez que cambia alguno de
nuestros signals como pueden ver acá
Esto está viniendo en la línea 34 Perdón
acá desde nuestro engine changes no pero
eh seguro más adelante vamos a estar
usando lo que vendría a ser el effect
para poder ir eh viendo Cuáles es los
Cuáles son los cambios que tienen
nuestros singles así que bueno Espero
que les haya gustado este video si
tienen alguna duda pues espero que lo
dejen también y antes que me olvide yo
había prometido de que iba a regalar un
curso si se suscribían a mi canal para
llegar a los 1000 suscriptores eh era la
primera vez que lo hacía eh Y bueno no
sabía que no se podía bueno no encontré
ninguna herramienta para poder obtener
todos los digamos suscriptores y poder
hacer el regalo Así que voy a igual lo
voy a dejar en en las redes que sobre
este video todas las personas que
Comenten voy a hacer un el sorteo en
base a estos comentarios porque sí hay
muchas herramientas para hacerlo en base
a los comentarios de un video así que
por favor compartan este video para que
llegue a más personas denle like y
también pues Comenten para que puedan
ganar este curso Que obviamente vamos a
conversarlo con la persona que lo gane
para poder dárselo y que le saque todo
el provecho necesario así que sin más me
despido y espero que estén muy
bien
Browse More Related Video
Dockerize an Angular Application using Nginx
Bloques de comando en Minecraft - conceptos básicos
FormData en javascript - Obteniendo datos de un formulario - Como cuando y porque usarlo - JS
Actualización del ALGORITMO de INSTAGRAM 2024
Resolución de ecuaciones lineales con Scratch
Configuring an Angular OIDC Client Application with OpenIAM v4.1.9
5.0 / 5 (0 votes)