2016-07-25 108 views
3

我想集成angular2-odata庫。我使用Angular2 - 類構造函數不能被調用沒有'新'

@Injectable() 
    class MyODataConfig extends ODataConfiguration{ 
     baseUrl="http://localhost:54872/odata/"; 
    } 

    bootstrap(app,[ 
     //some of my other providers etc. 
     provide(ODataConfiguration, {useClass:MyODataConfig}), 
     ODataServiceFactory, 
    ] 

問題是,當我嘗試注入ODataServiceFactory我得到的是以下錯誤:ODataConfiguration的實例化過程中的錯誤:

例外! (ClassService - > ODataServiceFactory - > ODataConfiguration)。 ORIGINAL EXCEPTION:TypeError:類的構造函數ODataConfiguration不能被調用沒有'新'

我GOOGLE了它,似乎有一些問題,而試圖注入擴展類,但我無法找到解決方案。任何幫助,將不勝感激。

+0

我認爲你的類需要一個構造函數調用'super();' – Harangue

+0

感謝您的建議,但我試圖添加構造函數(){ super(); },例外情況相同。 –

+0

你可以發佈你的'ODataServiceFactory'實現嗎? –

回答

1

暫時的解決辦法是對ODataConfiguration類使用新的,然後覆蓋的baseUrl

@Component({ 
    templateUrl: './categoryGridOData.component.html', 
    selector: 'my-category-grid-odata', 
    providers: [ { provide: ODataConfiguration, useFactory:() => { 
     let odta = new ODataConfiguration(); 
     odta.baseUrl = 'http://services.odata.org/V4/Northwind/Northwind.svc'; 
     return odta; } 
    }, ODataServiceFactory ], 
    styleUrls: [ './carGrid.component.css'] 
}) 
export class CategoryGridODataComponent { 

有關完整代碼參見:https://github.com/StefH/angular2-webpack-starter/blob/_stef_dev/src/app/car/categoryGridOData.component.ts#L18

對於一些詳細信息,請參閱:https://github.com/gallayl/angular2-odata/issues/3

相關問題