Dans mon intercepteur, je veux mettre un tuyau sur la réponse et faire de la déconnexion si le code d'état de réponse est 401, mais le problème est lorsque je mets un CatchError, l'observable n'est pas de type httpevent et la fonction d'interception attend le retour de ce type? }. p> p>
3 Réponses :
lancer une nouvelle erreur qui sera transmise au lieu de simplement retourner l'erreur:
Vous pouvez gérer votre J'espère que cela résoudra votre problème :) P> P> Error CODE> réponse avec l'approche ci-dessous, essayez ceci
Ce code est destiné à une version plus ancienne de RXJS New One est Tap et devrait être à l'intérieur du tuyau. TX pour votre aide
Voici comment je l'ai fait.
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { // req = req.clone({headers: req.headers.set('source', 'WEB')}); req = req.clone({ headers: new HttpHeaders({ 'source': 'WEB', 'Authorization': localStorage.getItem(TOKEN) || '' }) }); return next.handle(req).pipe(map((e: HttpEvent<any>) => { if (e instanceof HttpResponse) { /* console.error(e); console.log(e.status);*/ if (e.status === 401) { throw new Error('invalid token'); } } return e; })); }
Créez un itinéraire de déconnexion et naviguez.