У меня тоже такая же проблема. В моем случае вместо вызова DoEvents я обновляю представление Crystal Report. Единственным обходным решением, которое я нашел, является обновление моего представления по событию CloseUp вместо ValueChanged или TextChanged.
Скотт, как вы, наконец, исправили свою проблему?
JS является асинхронным. Это означает, что он не будет ждать выполнения любого запроса ввода-вывода и будет продолжать выполнять следующие строки кода.
blockquote>В вашем случае метод
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 } ] });