Alternative class provider for Http with Angular 2

Viewed 2569

I am trying to use an alternative class for Http in Angular 2.

I want to do so to have a CustomHttp class setting default options in constructor

import {Injectable} from 'angular2/core';
import {Http, RequestOptions, ConnectionBackend} from 'angular2/http';

@Injectable()
export class CustomHttp extends Http {
    constructor(_backend: ConnectionBackend, _defaultOptions: RequestOptions) {
        super(_backend, _defaultOptions);
        let jwtHeader = localStorage.getItem('jwt');
        if (jwtHeader != null) {
            this._defaultOptions.headers.append('Authorization', jwtHeader);
        }
        console.log("Pouet CustomHttp");
    }
}

I tried various options when bootstrapping, as I want this overload to be global to my app.

I tried :

bootstrap(AppComponent, 
    [HTTP_PROVIDERS,
        ROUTER_PROVIDERS,
        provide(Http, {useClass: CustomHttp,deps: [XHRBackend, BaseRequestOptions]})
    ]);

it raises :

browser_adapter.ts:73 EXCEPTION: No provider for ConnectionBackend! (TAPComponent -> SensService -> Http -> ConnectionBackend)

I also tried :

bootstrap(AppComponent, 
    [HTTP_PROVIDERS,
        ROUTER_PROVIDERS,
            provide(Http, {useFactory:
                function(backend, defaultOptions) {
                  return new CustomHttp(backend, defaultOptions);
                },
                deps: [XHRBackend, BaseRequestOptions]})
    ]);

it raises :

browser_adapter.ts:73 EXCEPTION: No provider for BaseRequestOptions! (TAPComponent -> SensService -> Http -> BaseRequestOptions)

What should I do ?

I am using beta 9.

1 Answers
Related