在Angular 7中渲染组件之前加载数据
在呈现组件之前,我试图恢复服务中的数据,但出现以下错误:TypeError:无法读取未定义的属性“dataEntries” 这是我的代码:在Angular 7中渲染组件之前加载数据,angular,typescript,angular7,Angular,Typescript,Angular7,在呈现组件之前,我试图恢复服务中的数据,但出现以下错误:TypeError:无法读取未定义的属性“dataEntries” 这是我的代码: ngOnInit() { this.route.params.subscribe((params:Params)=>{ this.ActivityId=params['id'] }) this.activityInstanceIdentifier= { "class":"eu.w4.engine.client.bpmn.w4.runtim
ngOnInit() {
this.route.params.subscribe((params:Params)=>{
this.ActivityId=params['id']
})
this.activityInstanceIdentifier= {
"class":"eu.w4.engine.client.bpmn.w4.runtime.ActivityInstanceIdentifier",
"id":this.ActivityId
}
this.activityInstanceAttachement= {
"class":"eu.w4.engine.client.bpmn.w4.runtime.ActivityInstanceAttachment",
"dataEntriesAttached":true
}
this.activityService.getActivityInstance(this.sessionService.getPrincipal(),
this.activityInstanceIdentifier,
this.activityInstanceAttachement)
.subscribe((ActivityInstance)=>{
this.dataInstance=ActivityInstance
});
}
forms = [
{
dataEditionMode:DataEditionMode.DISPLAY,
name:"demande",
editedInstance:this.dataInstance["dataEntries"]["demande"]["value"],
component:DemandeFormComponent,
multiple:false
}
]
我也尝试过使用“resolve”,但它不起作用,有什么帮助吗
JS是异步的。这意味着它不会等待任何I/O请求发出
完成并将继续执行下一行代码
在您的例子中,getActivityInstance
方法是异步的,因此JS不会等待它完成,它将执行下一行。因此
editedInstance:this.dataInstance[“dataEntries”][“demande”][“value”]
在服务返回数据之前执行(此时dataInstance
将未定义
,如果您尚未初始化它)
按如下方式修改代码:
this.activityService.getActivityInstance(this.sessionService.getPrincipal(),
this.activityInstanceIdentifier,
this.activityInstanceAttachement)
.subscribe((ActivityInstance)=>{
this.dataInstance=ActivityInstance;
forms = [
{
dataEditionMode:DataEditionMode.DISPLAY,
name:"demande",
editedInstance:this.dataInstance["dataEntries"]["demande"]["value"],
component:DemandeFormComponent,
multiple:false
}
]
});
异步问题:您应该在订阅回调中移动表单定义。如果您需要在加载组件之前从服务中检索数据,则可以使用,它会在呈现组件之前从服务中加载数据