Tengo un parentComponent llamado dashboardComponent. Esto contiene una tabla.
Al seleccionar una fila en esa tabla, muestro su subcomponente, que es companyAdmin, y le paso el ID de fila.
CompanyAdmin a su vez contiene 4 subcomponentes. La tarea de companyAdminComponent es realizar una solicitud GET con el ID de fila que recibió de su componente principal, el componente del tablero. Luego envíe distribuir esos datos a sus 4 subcomponentes.
El problema que tengo es que todo esto está en 1 página y, por lo tanto, no puedo usar un resolutor. Entonces, cuando renderizo el subcomponente de companyAdminComponent, falla porque aún no recibió los datos de la solicitud GET. y obteniendo el error
No se puede leer la propiedad 'nombre' de indefinido
Entonces, básicamente, ¿cómo muestro el subcomponente de companyAdmin, solo después de que se hayan cargado los datos?
El código
dashboard.html (componente principal)
Solo se muestra el código relevante por brevedad.
// ap-company-admin only is being shown when a row is selected in the table <div class="row extraRowSpace" *ngIf="companySelected"> <div class="col-xl-12"> <ap-company-admin [companyId]="company.id"></ap-company-admin> </div> </div>CompanyAdmin HTML (subcomponente de dashboardComponent)
<ap-company-details [companyDetails]="companyDetails"></ap-company-details>CompanyAdminComponent TS (subcomponente de dashboardComponent)
ngOnInit() { this.companyService.getAllCompanyDetails(this.companyId).subscribe( response => { this.allCompanyDetails = response; this.companyDetails = { cardsName: this.allCompanyDetails.cardsName, name: this.allCompanyDetails.name }; } ); }CompanyDetailsComponent (subcomponente de companyAdminComponent)
@Input() companyDetails; companyName: FormControl; cardsName: FormControl; ngOnInit() { this.companyName = new FormControl(this.companyDetails.name); this.cardsName = new FormControl(this.companyDetails.cardsName); // Basically it is crashing here because on init of this component the data of companyDetails hasn't come back yet from the GET call }Todas las cosas que encontré son cosas que hacer con la resolución, pero como no estoy navegando, solo muestro y oculto el componente companyAdminComponent al seleccionar una fila, no creo que pueda hacer esto con una resolución. ¿Algún consejo?