Solución:
ngOnInit
El gancho se activará en el próximo ciclo de detección de cambios que cubra el componente dinámico. Al cubrir me refiero a que la vista para el componente dinámico debe crearse y debe adjuntarse al árbol de detección de cambios Angular.
ViewContainerRef::createComponent
El método solo adjunta la Vista recién creada a la vista actual y la representa.
Una vez que esa nueva Vista se adjunta al árbol, Angular puede verificarla durante la fase de detección de cambios.
La siguiente fase de detección de cambios comienza una vez que NgZone determina que no hay microtareas programadas. Por ejemplo, sucederá después de su controlador de eventos o después de la llamada http.
Puede activar manualmente la detección de cambios para esa vista creada:
const componentRef = this.target.createComponent(componentFactory);
componentRef.changeDetectorRef.detectChanges(); // ngOnInit will be called
componentRef.instance.x = 3; // access this.x in ngOnInit will give you undefined
Por otro lado, en su caso, ngOnInit tendrá acceso a cualquier propiedad que haya pasado durante la llamada a setData.
const componentRef = this.target.createComponent(componentFactory);
componentRef.instance.x = 3;
// somewhen later ngOnInit will be called
De la documentación:
Inicialice la directiva / componente después de que Angular muestre primero las propiedades enlazadas a datos y establezca las propiedades de entrada de la directiva / componente.
Llamado una vez, después del primer ngOnChanges ().
Esto significa que se llama una vez que se realiza la interpolación y se configuran las entradas.