Je construis une application de démonstration angulaire 7 où j'ai une méthode POST générique. Bien que je puisse appeler cette méthode, il semble qu'aucune des erreurs (401 500, etc.) ne soit capturée dans le bloc catch. Je peux voir dans l'onglet réseau que la publication a échoué. Quel est le problème avec le code ci-dessous?
// Méthode de publication générique
private async genericPostMethodAsync(url: string, options:any, body: any):Promise<any> {
try {
const response = await this.httpClient.post(url, body,
options).toPromise();
console.log(response);
return response;
} catch (error) {
await this.handleError(error, this);
}
}
private handleError(error: any, any: any): Promise<any> {
return Promise.reject(error.message || error);
}
3 Réponses :
Dince, notez que vous utilisez Rxjs 5, pas Rxjs 6
Je devrais le mentionner plus tôt mais je préférerais utiliser la fonctionnalité async / await plutôt que de m'abonner.
essayez d'utiliser des tuyaux pour détecter les erreurs.
par exemple
getHeroes (): Observable<Hero[]> {
return this.http.get<Hero[]>(this.heroesUrl)
.pipe(
catchError(this.handleError('getHeroes', []))
);
}
Il semble que le code d'origine fonctionne réellement. Toutes les erreurs sont capturées dans le bloc catch. La solution était assez simple, mettre à jour les modules vers les dernières versions (mise à jour nmp).