2016-04-01 3 views
0

Hallo Ich möchte einen globalen Fehler 401 nach einer HTTP-Anfrage mit angular2 behandeln. Ich möchte die BaseResponseOptions-Klasse erweitern. Das ist der richtige Weg?BaseResponseOptions angular2 Umgang mit globalen Fehler

+0

Sieht aus wie eine dup von http://stackoverflow.com/questions/35498456/what-is-httpinterceptor-equivalent-in-angular2/35499034#35499034 –

Antwort

1

Sie könnten eher die Klasse Http selbst erweitern, um solche Fehler global zu behandeln. Auf diese Weise können Sie den Operator catch für die zugrunde liegenden Anforderungen nutzen und 401 Fehler abfangen.

@Injectable() 
export class CustomHttp extends Http { 
    constructor(backend: ConnectionBackend, defaultOptions: RequestOptions) { 
    super(backend, defaultOptions); 
    } 

    request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> { 
    console.log('request...'); 
    return super.request(url, options).catch(res => { 
     // do something 
    });   
    } 

    get(url: string, options?: RequestOptionsArgs): Observable<Response> { 
    console.log('get...'); 
    return super.get(url, options).catch(res => { 
     // do something 
    }); 
    } 
} 

und registrieren sie, wie unten beschrieben:

bootstrap(AppComponent, [HTTP_PROVIDERS, 
    new Provider(Http, { 
     useFactory: (backend: XHRBackend, defaultOptions: RequestOptions) => new CustomHttp(backend, defaultOptions), 
     deps: [XHRBackend, RequestOptions] 
    }) 
]); 

nur Antwortoptionen können Sie Zeit nicht in der Lage sein, Anfragen/Antworten abzufangen.