Kadir Ersezer
Kadir Ersezer

Reputation: 47

Angular interceptor error handling put & delete method problem

I show an alert based on the http response returned in Angular. My code works in Get and post methods, but not in put and delete methods.I'm stuck here and would be very happy if someone could help me. ApiUrl.ts => export const AlertUrls: string[] = [ // backend service urls ]

my-interceptor.ts => import { AlertUrls, collection } from "../ApiUrl";

  return next.handle(req).pipe(
    map((response: any) => {
        if ( AlertUrls.includes(req.url) && req.method !=='GET' && response instanceof HttpResponse && response.status === 200) {
          this.alertService.showSuccessAlert();
        }
    return response;
  }),

Upvotes: 1

Views: 91

Answers (1)

Naren Murali
Naren Murali

Reputation: 56650

Url not matching is the problem you are facing, you can simply use the string property, includes to check if the string is present inside the url, instead of doing a full equality check!

AlertUrl: /delete

will match for

Full URL: /delete/123uuh4u23424

  return next.handle(req).pipe(
    map((response: any) => {
        if (AlertUrls.find((url: any) => req.url.includes(url)) && req.method !=='GET' && response instanceof HttpResponse && response.status === 200) {
          this.alertService.showSuccessAlert();
        }
    return response;
  }),

Upvotes: 1

Related Questions