2016-07-25 1 views
3

Я пытаюсь интегрировать библиотеку углов2-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 ИСКЛЮЧЕНИЯ: TypeError: Class конструктор ODataConfiguration не может быть использован без «нового»

Я гугл его, и кажется, что есть некоторые проблемы при попытке придать расширенный класс, но я не смог найти решение для этого. Любая помощь будет оценена по достоинству.

+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