j'ai un gestionnaire d'événements globalangulaire 4 - Erreur Http ne va pas au gestionnaire d'erreur globale personnalisée
import { ErrorHandler, Injectable, Injector } from '@angular/core';
import { Router } from '@angular/router';
@Injectable()
export class GlobalErrorHandler implements ErrorHandler {
errorMsg: string;
stackTrace: string;
constructor(private injector: Injector) {
}
handleError(error) {
var router = this.injector.get(Router);
this.errorMsg = JSON.parse(error._body).message;
this.stackTrace = JSON.parse(error._body).stackTrace;
router.navigate(["error", { errMsg: this.errorMsg, stackTrace:this.stackTrace }]);
//alert(error._body);
}
}
J'inclus dans les fournisseurs:
providers: [PricingEventService, {
provide: ErrorHandler,
useClass: GlobalErrorHandler
}],
J'espère GlobalErrorHandler sera appelé s'il y a une exception tout en faisant la demande HTTP (poste ou obtenir) - i jeté une exception dans la méthode post
saveEvent(event: PricingEvent): Observable<string> {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.post('/pricingevent', event, options)
.map((response: Response) => <string>response.json().value.errMsg);
}
Cependant, le GlobalErrorHandler n'a jamais été appelé - si j'utilise une méthode .catch dans l'appel de service, il va capturer l'exception que j'ai jeté du serveur.
Quelqu'un peut-il me dire pourquoi et comment résoudre ce problème?
Merci
la dernière chose que je veux faire est d'ajouter .catch dans tous les sens .. Même si je suis assez sûr que cela fonctionnerait. – Colt