2017-05-25 45 views
3

我使用angular-cli创建了一个新的Angular项目,然后通过npm安装Office TS定义,并将Office JS API CDN放入索引的标题中html的。但是,在我的main.ts中,当我调用Office.initialize = function(){};即使命名空间被TS识别,它也找不到名称'Office'。有人知道我在做什么错吗?谢谢!Angular Office加载项:“找不到名称'Office'”

我一直在这里以下页面提示: https://dev.office.com/docs/add-ins/develop/add-ins-with-angular2

如果你想重现我的方案和安装角度CLI:

ng new test 
cd test 
npm install –save-dev @types/office-js 

然后打开你的项目目录,并转到SRC/index.html的。在标题中添加此CDN:

<script src="https://appsforoffice.microsoft.com/lib/1/hosted/Office.js" type="text/javascript"></script> 

然后去为src/main.ts

,并改变它使应用程序不引导模块直至其初始化办公室:

Office.initialize = function(){ 
    if (environment.production) { 
    enableProdMode(); 
    } 
    platformBrowserDynamic().bootstrapModule(AppModule); 
}; 

UPDATE

我能够用得到这个在我main.ts工作:

declare const Office: any; 

Office.initialize = function() { 
    platformBrowserDynamic().bootstrapModule(AppModule); 
}; 

但是,这只有在加载项在Office应用程序中被侧面加载时才有效。该模块似乎没有在浏览器中引导,只是说'正在加载...'。有没有办法让它加载到浏览器中进行调试?我关心的是这将如何影响调试以及量角器,业力和茉莉花的任何E2E或单元测试。

回答

1

我建议你看一看Script Lab,一个recently-宣布了使用Angular 4的工具和开源展示样本,并且您可以使用它来获取灵感。一些基础技术也在podcast about the project中讨论。

我们为Script Lab所做的工作是为Office.js初始化创建Promise,并乐观地等待它几秒钟。如果我们没有收到它,我们会显示一组按钮,以帮助用户选择是以web模式启动还是启动,就好像它仍然在加载项中(并希望最好)。

又见How to correctly check the host: Office, Office online and web browser

1

Office.js库不会在浏览器中加载,因此Office.initialize()不会运行。但是你可以在C:\Windows\SysWOW64\F12\F12Chooser.exe

更新调试与F12工具的Office应用程序的加载项:您可以找到帮助的工具,在这里:https://docs.microsoft.com/en-us/microsoft-edge/f12-devtools-guide

+0

是否有关于如何使用这个工具,你可以点我的导游吗? – codex

+0

更新了我的答案,并附有链接以帮助F12。 –