Intenté usar el método que se encuentra en Angular CDK: Cómo configurar las entradas en un ComponentPortal pero PortalInjector parece estar en desuso, sin instrucciones reales sobre qué hacer en su lugar. La advertencia de desaprobación indica "Usar Injector.create en su lugar". con pero no cómo o dónde usarlo o qué está reemplazando realmente.
También traté de entender el propio componente Diálogo de Material para ver si podía averiguar cómo lo hicieron, pero nada.
Entonces planteo la pregunta nuevamente para Angular 13 :
¿Cómo puedo pasar datos dentro y fuera de un componente que se creó usando ComponentPortal() ? Si la respuesta es algo genérico, como usar un inyector, ¿puede indicarme un ejemplo o documentación sobre cómo hacerlo? ¿Un 'hola mundo' de inyectores que pasan?
En mi humilde opinión, no tenemos una forma sencilla de tener algo que hacemos como una entrada o salida de componentportal .
Lo que puede hacer es pasar los datos que desea usar como @Input usando el evento attached del portal.
Verifique este código de demostración donde estamos pasando valor al componente Guest .
<ng-template (attached)="onComponentRendering($event)" [cdkPortalOutlet]="guestPortal"></ng-template>y luego usarlo como
public onComponentRendering(ref): void { ref = ref as ComponentRef<any>; ref.instance['guestData'] = [ ...something]; }Para los datos de salida, puede crear un servicio (con Asunto ) y usarlo para comunicarse entre componentes.