httpclient - Angular 4 HttpInterceptor : show and hide loader -
i have implemented httpinterceptor interface in order intercept outgoing requests , incoming responses.
i want show loader when request created , hide loader when response received.
although code bellow works when httpresponse detected, not detect http failure (when response code different 200), therefore, loader not hidden.
@injectable() export class authinterceptor implements httpinterceptor { constructor(private loaderservice: loaderservice) { } intercept(req: httprequest<any>, next: httphandler): observable<httpevent<any>> { this.loaderservice.show(); return next .handle(req) .do(event => { //nothing printed when http failure occurs console.log('detecting event ', event); if (event instanceof httpresponse) { console.log('detecting http response'); this.loaderservice.hide(); } }); } }
try adding error handling catch observable next:
.catch((error: any) => { if (error instanceof httperrorresponse) { this.loaderservice.hide(); // show error user here } else { return observable.throw(error); } })
Comments
Post a Comment