我无法弄清楚使角度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隔离它没有直接访问窗口。
我该如何克服这个问题?当然,其中一个解决方案是制作猴子补丁,但我怀疑它是要走的路。
答案 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';