在渲染子组件之前加载数据

时间:2017-04-26 14:00:52

标签: javascript rest angular observable subscribe

我有一个名为dashboardComponent的parentComponent。这包含一个表格。

在该表中选择一行时,我会显示它的子组件,即companyAdmin,然后将rowID传递给它。

其上的CompanyAdmin包含4个子组件。 companyAdminComponent的任务是使用从其parentComponent(dashboardComponent)收到的rowId执行GET请求。然后发送将该数据分发给它的4个子组件。

我遇到的问题是,这一切都在1页上,所以不能使用解析器。因此,当我渲染companyAdminComponent的subComponent时,它崩溃了,因为它还没有收到GET请求中的数据。并得到错误

  

无法读取未定义的属性“名称”

所以基本上如何在加载数据后才显示companyAdmin的subComponent。

代码

dashboard.html(父组件)

仅显示相关代码以简洁

// 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(dashboardComponent的子组件)

<ap-company-details [companyDetails]="companyDetails"></ap-company-details>

CompanyAdminComponent TS(dashboardComponent的子组件)

    ngOnInit() {
        this.companyService.getAllCompanyDetails(this.companyId).subscribe(
            response => {
                this.allCompanyDetails = response;

                this.companyDetails = {
                    cardsName: this.allCompanyDetails.cardsName,
                    name: this.allCompanyDetails.name
                };
            }
        );
    }

CompanyDetailsComponent(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
}

我找到的所有东西都与解析器有关,但由于我没有导航但只是在选择行时显示并隐藏了companyAdminComponent,我认为我不能用解析器执行此操作。有什么建议吗?

0 个答案:

没有答案