Breezejs、angular 2 和 OData

Breezejs, angular 2 and OData

我无法弄清楚什么是使 angular 2、BreezeJs 和 OData 协同工作的正确方法

我遵循了这个 npm 包的说明:https://www.npmjs.com/package/breeze-bridge-angular2

我还添加了 link 到 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 是如何初始化的,但似乎应该是 link 到全局 window 对象。我猜是因为某些 angular 2 隔离,它无法直接访问 window。

我该如何克服这个问题?肯定的解决方案之一是制作猴子补丁,但我怀疑这是可行的方法。

您缺少 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';