Ich möchte Http
mit einer benutzerdefinierten Klasse überschreiben, sagen HttpClient
, einige Operationen vor einer Anfrage und nach einer Antwort zu tun, aber ich möchte nicht daran zu erinnern, zu importieren diese Klasse anstelle der Plattform http-Klasse.Angular 2 - Verwenden von "Multi" -Provider zum Überschreiben von Http
Ich habe experimentiert, dies über die "Multi" -Anbieter zu tun, aber ich kann es nicht richtig klicken.
Hier ist meine Klasse überschreiben:
import {Injectable} from '@angular/core';
import {Http, Headers} from '@angular/http';
@Injectable()
export class HttpClient {
private http: Http;
constructor(http: Http) {
this.http = http;
}
get(url) {
let headers = new Headers();
doSomethingToHeader(headers);
return this.http.get(url, {
headers: headers
});
}
}
Und hier ist mein main.ts
bootstrap(AppComponent, [
provide(HTTP_PROVIDERS, {useExisting: HTTP_PROVIDERS, multi: true}),
provide(HTTP_PROVIDERS, {useClass: HttpClient, multi: true})
]);
Aber wenn ich versuche http.get() aufzurufen, in meiner app, ich
ORIGINAL EXCEPTION: No provider for Http!
Irgendwelche Ideen? Gehe ich in die falsche Richtung?
Danke!
UPDATE
fand ich diese blog post. Es beschreibt ziemlich genau das, was Gunter unten beschreibt. Ich akzeptiere seine Antwort.
Ich habe das versucht, aber ich bekomme eine zyklische Abhängigkeit. Gibt es eine spezielle Möglichkeit, diese zu importieren, um this.http.get() in einem Service/einer Komponente zu verwenden, nachdem Sie den Provider so deklariert haben? –
Bitte geben Sie weitere Details an. Was ist die genaue Fehlermeldung? –
ORIGINAL EXCEPTION: Kann zyklische Abhängigkeit nicht instanziieren! (Http -> Http) –