2017-03-24 1 views
2

J'ai besoin de l'équivalent de l'intercepteur dans Angular 1.x. J'ai trouvé beaucoup de solutions dans les vieilles questions, mais apparemment elles ne fonctionnent plus!Ajouter l'en-tête à toutes les requêtes Http -> Angular2

Pouvez-vous fournir une solution qui fonctionne avec la dernière version de Angular 2?

+1

Jetez un oeil: [41998690] (https://stackoverflow.com/questions/41998690/angular2-http-service-to-replace-with-custom-service) – gsc

Répondre

2

Vous pouvez remplacer classe angulaire Http, ajoutez-têtes là-bas et puis fournir CustomHttp classe dans vos modules:

import { Injectable } from '@angular/core'; 
import { Observable } from 'rxjs/Rx'; 
import { RequestOptionsArgs, RequestOptions, ConnectionBackend, Http, Request, Response, Headers } from "@angular/http"; 

@Injectable() 
export class CustomHttp extends Http { 

headers: Headers = new Headers({ 'Something': 'Something' }); 
options1: RequestOptions = new RequestOptions({ headers: this.headers }); 

constructor(backend: ConnectionBackend, 
    defaultOptions: RequestOptions) { 
    super(backend, defaultOptions); 
} 

get(url: string, options?: RequestOptionsArgs) { 
    console.log('Custom get...'); 
    return super.get(url, this.options1).catch(err => { 
     console.log(err); 
    }); 
} 
} 

Vous devez faire la même chose pour post, put, delete etc. Et dans votre module:

{ provide: Http, 
    useFactory: (
     backend: XHRBackend, 
     defaultOptions: RequestOptions) => 
     new CustomHttp(backend, defaultOptions), 
    deps: [XHRBackend, RequestOptions] 
} 
+1

Eh bien, Merci mec! J'avais seulement besoin de la dernière partie (comment déclarer le nouveau service dans le NgModule), et cela a fonctionné immédiatement! – Nano

+1

@Nano Glad Je pourrais vous aider, veuillez considérer que ma réponse est acceptée si elle vous a aidé. :) –

+1

a dû attendre 10 minutes avant de marquer une question comme acceptée :( – Nano