Breezejs,角2和OData

时间:2016-09-06 15:38:58

标签: angular odata breeze

我无法弄清楚使角度2,BreezeJs和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 });
    });

但不幸的是它没有用。

我发现breezejs正在尝试解析函数__requireLibCore(libName)中的库OData,它在global.window中查找,但此变量未定义。

我不确定global.window是如何初始化的,但似乎它应该链接到全局窗口对象。我想因为一些角度2隔离它没有直接访问窗口。

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

1 个答案:

答案 0 :(得分: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';