2016-09-06 36 views
2

我无法弄清楚什么是使角2正确的方法,BreezeJs和OData的共同努力Breezejs,角2的OData

我跟着从这个NPM包装说明:https://www.npmjs.com/package/breeze-bridge-angular2

我也加链接到OData库。

和我的初始化的OData适配器代码如下所示:

config.initializeAdapterInstance('dataService', 'webApiOData', true); 
    this._em = new EntityManager('http://localhost:7248/api');  
    this._em.fetchMetadata((schema) => { 
     console.log('schema', schema); 
     var collectionPointType = this._em.metadataStore.getEntityType("ClientBrowse"); 
     (<any>collectionPointType).setProperties({ autoGeneratedKeyType: AutoGeneratedKeyType.Identity }); 
    }); 

但unfortunally没有奏效。

我发现的是,breezejs试图解决函数__requireLibCore(libName)中的函数库OData,它在global.window中查找,但该变量未定义。

我不知道global.window如何初始化,但似乎它应链接到全局窗口对象。我猜是因为有些角度2隔离,它不能直接访问窗口。

我该如何克服这个问题?当然,其中一个解决方案是制作猴子补丁,但我怀疑这是一条路。

+0

我有完全相同的问题。我已经导入了datajs。仍然是全球性的对象似乎是一个空洞的对象..有人可以抛出一个灯光如何确保对全球的正确价值? –

回答

2

您缺少datajs依赖关系。 Breeze OData适配器需要datajs。

npm install datajs --save

然后将其添加到您的systemjs.config.js

map: { ... 'datajs': 'npm:datajs' }, packages: { ... 'datajs': { main: 'index.js', defaultExtension: 'js' } }

然后将它导入你的应用程序,所以它被加载。

import { config } from 'breeze-client'; import 'datajs';