2017-05-25 75 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。 –