没有'new'就不能调用Angular2 - Class构造函数

时间:2016-07-25 18:49:09

标签: javascript angular odata

我正在尝试整合angular2-odata库。我正在使用

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

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

问题是,当我尝试注入ODataServiceFactory时,我得到的是以下错误:

EXCEPTION:实例化ODataConfiguration时出错! (ClassService - > ODataServiceFactory - > ODataConfiguration)。 原始异常:TypeError:如果没有'new',则无法调用类构造函数ODataConfiguration

我用谷歌搜索它,似乎在尝试注入扩展类时存在一些问题,但我无法找到解决方案。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

临时解决方法是在ODataConfiguration类上使用new,然后覆盖 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