2016-09-06 54 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';