Использование Office Dialog API с Angular 2 (для надстройки для Outlook)

Это основной вопрос:

У меня есть приложение angular 2, и я пытаюсь использовать диалоговое API Office. По сути, у меня есть маршрут https: // домен / успех, который я хочу открыть в диалоговом окне.

Конкретнее вот что я пытаюсь

Я нахожусь на маршруте https: // домен / всплеск, который отображает компонент всплеск.

В splashComponent.ts я называю this.microsoftService.doStuff

В microsoftService, метод doStuff, я вызываю

Office.context.ui.displayDialogAsync('https://domain/success');

Это должно сделать компонент успеха.

Тем не менее, я вижу компонент всплеска. URL диалога

https://domain/success?_host_info=blahblah|isDialog|#/splash

Почему это так? И как мне сделать компонент успеха?

1 ответ

Это скорее частичная диагностика, чем решение, но она слишком сложна для комментариев.

Независимо от того, добавляет ли Outlook параметр запроса, ваш маршрутизатор добавляет "#/splash" в конец URL, и именно поэтому он открывает заставку. Я думаю, что проблема заключается в конфигурации маршрутизации и стратегии маршрутизации.

С этим связан тот факт, что диалоговое окно Office открывается в совершенно отдельном экземпляре браузера с совершенно отдельным экземпляром механизма JavaScript и контекстом выполнения. Таким образом, полная вторая копия вашего веб-приложения открывается в диалоговом окне. Это означает, что корневая маршрутизация будет запущена.

Если вы решили использовать маршрут в своем веб-приложении в диалоговом окне, то вам нужна какая-то условная логика, в которой приложение проверяет, открывается ли он в диалоговом окне, и соответственно выполняет маршрутизацию.

Тем не менее, я рекомендую, чтобы при использовании Office Dialog API в надстройке на основе Angular вы отклонялись от принципа "одной страницы" и просто создавали страницу success.html, размещаемую в вашем домене. Это мне намного проще и менее подвержено ошибкам.

Кстати, вам не нужно помещать домен вашей собственной надстройки в <AppsDomains> в манифесте. Надстройка доверяет себе и всему, что находится в ее собственном домене.

Дополнительные сведения см. В разделе Использование API диалогового окна Office с одностраничными приложениями и маршрутизацией на стороне клиента, а также в остальной части этой статьи.

Другие вопросы по тегам