Загрузка данных перед рендерингом компонента в Angular 7

У меня тоже такая же проблема. В моем случае вместо вызова DoEvents я обновляю представление Crystal Report. Единственным обходным решением, которое я нашел, является обновление моего представления по событию CloseUp вместо ValueChanged или TextChanged.

Скотт, как вы, наконец, исправили свою проблему?

0
задан SAHBANI Med 19 March 2019 в 10:50
поделиться

1 ответ

JS является асинхронным. Это означает, что он не будет ждать выполнения любого запроса ввода-вывода и будет продолжать выполнять следующие строки кода.

В вашем случае метод getActivityInstance является асинхронным, поэтому JS не будет ждать его завершения и выполнит следующую строку. Следовательно,

editedInstance : this.dataInstance["dataEntries"]["demande"]["value"] выполняется до того, как сервис вернет данные (это время dataInstance будет undefined, если вы его не инициализировали).

Измените свой код следующим образом:

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
 }
]
  });
0
ответ дан programoholic 19 March 2019 в 10:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: