Ошибка при вызове сервиса из углового компонента, открытого в диалоге office.js - PullRequest
0 голосов
/ 30 марта 2019

Мое приложение построено на Angular 5, и мы используем Office.js для взаимодействия с документом MS Office Word.

Шаг 1. Вызов Office DisplayDialogAsync для загрузки компонента. enter image description here

Шаг 2. В компоненте attribute-users я вызываю HTTPS GET, чтобы получить всех пользователей на основе поискового запроса

enter image description here

Шаг 3. Служба angular использует HttpClient (this.http) для вызова службы enter image description here

Однако вызов вызывает ошибку и выводит это сообщение об ошибке на консоль браузера. enter image description here

Примечание. Если компонент attribute-users вызывается через угловой маршрутизатор (this.router.navigate) вместо загрузки его в диалоге office.js, он работает нормально! Кроме того, для вышеупомянутой проблемы вызов http также не виден в сетевом трафике.

Есть мысли о том, что мне здесь не хватает?

1 Ответ

0 голосов
/ 01 апреля 2019

(Исключил мой первоначальный ответ в свете разъяснения ОП, что он использует HTTPS.)

Новый ответ:

  1. Когда вы открываете диалоговое окно Office, вы открываете совершенно другой экземпляр браузера и его среду выполнения JavaScript. Когда вы передаете маршрут от приложения Angular к диалоговому окну, вы запускаете совершенно отдельный экземпляр вашего приложения в диалоговом окне. Я не рекомендую это. Я рекомендую вам создать простую HTML-страницу для запуска в диалоговом окне, хотя это технически означает, что у вас больше нет приложения «одной страницы». Эта страница должна делать очень мало. Просто получите токен доступа и передайте его обратно на родительскую страницу, обычно на страницу панели задач, с помощью messageParent API. Все мясное в приложении должно происходить на родительской странице. Это будет включать ваши getUsersFromIcmM и getIcm.

  2. Если вы не воспользуетесь моим советом в # 1, то вот шаг по устранению неполадок, который вы должны предпринять: назначьте обработчик событию DialogEventReceived и посмотрите, какое сообщение об ошибке вы получаете. Подробнее см. Ошибки и события в диалоговом окне . (И, если вы еще этого не сделали, прочитайте всю эту статью.)

...