Search
 
SCRIPT & CODE EXAMPLE
 

JAVASCRIPT

NGX loading Interceptor

// loader-interceptor.service.ts
import { Injectable } from '@angular/core';
import {
  HttpResponse,
  HttpRequest,
  HttpHandler,
  HttpEvent,
  HttpInterceptor
} from '@angular/common/http';
import { Observable } from 'rxjs';
import { LoaderService } from '../services/loader.service';

@Injectable()
export class LoaderInterceptor implements HttpInterceptor {
  private requests: HttpRequest<any>[] = [];

  constructor(private loaderService: LoaderService) { }

  removeRequest(req: HttpRequest<any>) {
    const i = this.requests.indexOf(req);
    if (i >= 0) {
      this.requests.splice(i, 1);
    }
    this.loaderService.isLoading.next(this.requests.length > 0);
  }

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    this.requests.push(req);

    console.log("No of requests--->" + this.requests.length);

    this.loaderService.isLoading.next(true);
    return Observable.create(observer => {
      const subscription = next.handle(req)
        .subscribe(
          event => {
            if (event instanceof HttpResponse) {
              this.removeRequest(req);
              observer.next(event);
            }
          },
          err => {
            alert('error' + err);
            this.removeRequest(req);
            observer.error(err);
          },
          () => {
            this.removeRequest(req);
            observer.complete();
          });
      // remove request from queue when cancelled
      return () => {
        this.removeRequest(req);
        subscription.unsubscribe();
      };
    });
  }
}
Copy
Comment

PREVIOUS NEXT
Code Example
Javascript :: usescript +react 
Javascript :: jQuery.datepicker is undefined 
Javascript :: js object percorrer 
Javascript :: component rerender for tab navigation 
Javascript :: mongoose search by keywords 
Javascript :: invite tracker node.js v13 
Javascript :: Temporarily Edit Text on Any Website 
Javascript :: how to connect terminal with javascript 
Javascript :: iterating over an array 
Javascript :: export data from paginated api javascript vuetify 
Javascript :: javascript how to multiply numbers 
Javascript :: Get 7 days Array 
Javascript :: toast width match parent 
Javascript :: Answer the following questions by identifying what unit of measurement to be used. 2pts. Brainly 
Javascript :: vite esbuild configuration 
Javascript :: useLinkPressHandler 
Javascript :: create array, fill with spaces, convert to string and concat 
Javascript :: kitten ui input height multiline 
Javascript :: load widget after read data from json file 
Javascript :: key html 
Javascript :: id on delete action javascript react 
Javascript :: arrow function with computed property vue 
Javascript :: Return the N-th value of the Fibonacci sequence 
Javascript :: conditional statement for node on internet and node local server 
Javascript :: how to detech my cosle errors in angualr 
Javascript :: useHistory: useNavigate if you install v6 or more than react-router-dom": ^6.2.1 
Javascript :: crear un texto dinamicamente con javascript 
Javascript :: react redux reducer add objects to reducer 
Javascript :: date change 
Javascript :: Rest and spread operators in ES6 
ADD CONTENT
Topic
Content
Source link
Name
8+3 =