2016-07-12 2 views
0

Я пытаюсь создать обертку для класса XHRBackend, и мне удалось успешно создать и использовать все предоставленные службы в моем внешнем AppComponent, но я не могу упаковать провайдеров в самом фактическом обслуживании. Я вставляю класс в конструктор компонентов, но я не могу себе представить, что что-то сломает.Angular2 - Список поставщиков как константа не работает

Текущий AppComponent код:

import {HTTP_PROVIDERS, Http, ConnectionBackend, RequestOptions} from "@angular/http"; 
import {ROUTER_DIRECTIVES} from "@angular/router"; 
import {XHRBackendWrapper} from 'backendwrapper.services'; 

@Component({ 
    selector: 'app', 
    template: './app.component.html', 
    directives: [ROUTER_DIRECTIVES], 
    providers: [ 
     HTTP_PROVIDERS, 
     provide(Http, { 
      useFactory: (xhrBackend: ConnectionBackend, requestOptions: RequestOptions) => new Http(xhrBackend, requestOptions), 
      deps: [XHRBackendWrapper, RequestOptions] 
     }), 
     XHRBackendWrapper 
    ] 
}) 
export class AppComponent { 
    constructor(xhrBackend: XHRBackendWrapper){ 
    } 
} 

Желаемая AppComponent код:

import {HTTP_PROVIDERS} from "@angular/http"; 
import {ROUTER_DIRECTIVES} from "@angular/router"; 
import {BACKEND_PROVIDERS, XHRBackendWrapper} from 'backendwrapper.services'; 

@Component({ 
    selector: 'app', 
    template: './app.component.html', 
    directives: [ROUTER_DIRECTIVES], 
    providers: [ 
     HTTP_PROVIDERS, 
     /** THIS IS THE ONLY DIFFERENCE HERE!!! ***/ 
     BACKEND_PROVIDERS 
    ] 
}) 
export class AppComponent { 
    constructor(xhrBackend: XHRBackendWrapper){ 
    } 
} 

Желаемая экспортироваться константу из серверной оболочки:

export const BACKEND_PROVIDERS = [ 
    provide(Http, { 
     useFactory: (xhrBackend: ConnectionBackend, requestOptions: RequestOptions) => new Http(xhrBackend, requestOptions), 
     deps: [XHRBackendWrapper, RequestOptions] 
    }), 
    XHRBackendWrapper 
]; 

Когда я пытаюсь сделать это я получаю One or more of providers for "AppComponent" were not defined Ошибка, которая появляется в моей консоли b eause XHRBackendWrapper не может быть найден. Что мне здесь не хватает?

Я не могу отправить весь код, потому что это сделало бы этот вопрос слишком большой, но, если это помогает, это общая идея для XHRBackendWrapper:

@Injectable() 
export class XHRBackendWrapper extends ConnectionBackend { 
    constructor(private _xhrBackend: XHRBackend) 
    { 
     super(); 
    } 

    createConnection(request: Request) 
    { 
     return this._xhrBackend.createConnection(request); 
    } 
} 

ответ

0

Не укомплектовать уверен, но вы может потребоваться разрушить ваши BACKEND_PROVIDERS следующим образом:

providers: [ 
    ...HTTP_PROVIDERS, 
    /** THIS IS THE ONLY DIFFERENCE HERE!!! ***/ 
    ...BACKEND_PROVIDERS 
] 
Смежные вопросы