2017-08-29 20 views
2

我正在使用Angular處理Outlook加載項。我在Outlook for Windows中收到一個錯誤信息,指出組件在加載索引頁後未加載。使用Chrome和Firefox的Outlook Web App不會發生這種情況。Office.js尚未完全加載:Outlook Angular插件

錯誤消息:

SCRIPT5022: Office.js has not been fully loaded yet. Please try again 
later or make sure to add your initialization code on the Office.initialize function. 
polyfills.bundle.js (2741,25) 

這是我index.ts

import { enableProdMode } from '@angular/core'; 
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 

import { AppModule } from './app/app.module'; 
import { environment } from './environments/environment'; 
import * as $ from 'jquery'; 

declare let Office:any; 

function launch() { 
    const platform = platformBrowserDynamic(); 
    platform.bootstrapModule(AppModule) 
    .then((success: any) => { 
     console.log('SampleAddin: bootstrap success', success); 
    }) 
    .catch((error: any) => { 
     console.log('SampleAddin: bootstrap error', error); 
    }); 
} 

Office.initialize = reason => { 
    console.log('Office intialize.....'); 

    $(document).ready(function() { 

    if (environment.production) { 
     enableProdMode(); 
    } 

    launch(); 

    }); 

} 

回答

2

回答我的問題:我不能在Outlook Mac和Windows加載組件。但添加到polyfills.ts後:

import 'core-js/client/shim'; 

它的工作在IE 11也似乎這並沒有打破其他瀏覽器。

+1

需要注意的是,使用Outlook for Mac,它不使用IE11,而是使用自定義的WebKit實現。這就是說,這很有趣。我不確定我是否明白爲什麼你需要一個墊片才能讓Office.initialize()發射。我非常好奇,什麼組件打破了這個墊片固定的東西。 –

+0

是的,我提到IE 11的工作,因爲它以前沒有工作,並在windows.Office.initialize()火災發生在polyfills.bundle.js。我認爲墊片用於提高瀏覽器的競爭力。 (https://angular.io/guide/browser-support) –

+1

這是正確的,墊片和polyfill用於跨瀏覽器兼容性。然而,這裏奇怪的是,你沒有得到任何其他錯誤。通常我會希望看到額外的錯誤,指出初始化沒有被調用的根本原因。同樣奇怪的是,考慮到瀏覽器引擎的不同,Mac和Windows都失敗了。 –