从office.js对话框中打开的角度组件调用服务时出错

时间:2019-03-30 10:48:31

标签: javascript angular office-js angular-services angular-httpclient

我的应用程序基于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

注意-如果通过角度路由器(this.router.navigate)调用attribute-users组件,而不是将其加载到office.js对话框中,则可以正常工作!另外,对于上述问题,在网络流量中也看不到http呼叫。

对我在这里想念什么有什么想法吗?

1 个答案:

答案 0 :(得分:1)

(鉴于OP对他正在使用HTTPS的澄清,删除了我的原始答案。)

新答案:

  1. 打开Office对话框时,将打开浏览器及其JavaScript运行时的完全不同的实例。当您将路由从Angular应用程序传递到对话框时,您将在对话框中启动应用程序的完全独立实例。我不建议这样做。我建议您创建一个简单的HTML页面以在对话框中启动,即使从技术上来说这意味着您实际上不再拥有“单个页面”应用程序。该页面应该做的很少。只需获取访问令牌,然后使用messageParent API将其传递回父页面(通常是任务窗格页面)即可。应用程序中的所有杂物都应该在父页面中进行。这将包括您的getUsersFromIcmM和getIcm。

  2. 如果您在#1中没有接受我的建议,则应该采取以下故障排除步骤:将处理程序分配给DialogEventReceived事件,然后查看收到的错误消息。有关详细信息,请参见Errors and events in the dialog window。 (而且,如果还没有,请阅读整篇文章。)