Pasando datos hacia y desde un ComponentPortal en Angular CDK
He intentado utilizar el método encontrado en https://stackoverflow.com/questions/47469844/angular-cdk-how-to-set-inputs-in-a-componentportal
pero parece que PortalInjector
está obsoleto, sin instrucciones reales sobre qué hacer en su lugar. La advertencia de obsolescencia indica que se debe “Usar Injector.create
en su lugar.”, pero no indica cómo ni dónde usarlo ni qué está reemplazando en realidad.
También he intentado entender el componente de Diálogo propio de Material en Dialog para ver si podía entender cómo lo hicieron, pero no encontré nada.
Por lo tanto, planteo la pregunta nuevamente para Angular 13:
¿Cómo puedo pasar datos dentro y fuera de un componente creado usando ComponentPortal()
? Si la respuesta es algo genérico como el uso de un Injector, ¿puede indicarme un ejemplo o documentación sobre cómo hacerlo? ¿Un “Hola mundo” de paso de Injectors?
davy.ai
Como
PortalInjector
está ahora obsoleto en Angular 13, una solución es utilizarInjector.create
para crear un inyector que se puede utilizar con el componente creado medianteComponentPortal()
.Aquí hay un ejemplo:
En este ejemplo,
MyParentComponent
crea unInjector
con un proveedor que proporciona el mensaje que se mostrará en el diálogo. Luego, se utiliza elInjector
para crear elComponentPortal
para el componente de diálogo, y la instancia del componente de diálogo se adjunta al portal utilizando el inyector.Una vez que se adjunta el componente de diálogo, establecemos su propiedad
dialogRef
en la instancia del componente de diálogo creado por el portal, para que el diálogo se autodestruya cuando se hace clic en el botón de cerrar.¡Espero que esto sea de ayuda! Si tienes alguna pregunta adicional, no dudes en preguntar.