我的应用程序基于Angular 5构建,我们正在使用Office.js与MS Office Word文档进行交互。
步骤1:调用office displayDialogAsync加载组件。
步骤2:在attribute-users组件中,我正在调用HTTPS GET以根据搜索词获取所有用户
步骤3:Angular服务使用HttpClient(this.http)调用该服务
注意-如果通过角度路由器(this.router.navigate)调用attribute-users组件,而不是将其加载到office.js对话框中,则可以正常工作!另外,对于上述问题,在网络流量中也看不到http呼叫。
对我在这里想念什么有什么想法吗?
答案 0 :(得分:1)
(鉴于OP对他正在使用HTTPS的澄清,删除了我的原始答案。)
新答案:
打开Office对话框时,将打开浏览器及其JavaScript运行时的完全不同的实例。当您将路由从Angular应用程序传递到对话框时,您将在对话框中启动应用程序的完全独立实例。我不建议这样做。我建议您创建一个简单的HTML页面以在对话框中启动,即使从技术上来说这意味着您实际上不再拥有“单个页面”应用程序。该页面应该做的很少。只需获取访问令牌,然后使用messageParent
API将其传递回父页面(通常是任务窗格页面)即可。应用程序中的所有杂物都应该在父页面中进行。这将包括您的getUsersFromIcmM和getIcm。
如果您在#1中没有接受我的建议,则应该采取以下故障排除步骤:将处理程序分配给DialogEventReceived事件,然后查看收到的错误消息。有关详细信息,请参见Errors and events in the dialog window。 (而且,如果还没有,请阅读整篇文章。)