2017-08-29 21 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都失败了。 –