Skip to content

Angular 5+ http interceptor - intercepts automatically all http requests and shows a spinkit spinner / loader / progress bar

License

Notifications You must be signed in to change notification settings

togbyte/ng-http-loader

 
 

Repository files navigation

ng-http-loader

Build Status npm npm

Changelog

Please read the changelog

Installation

To install this library, run:

$ npm install ng-http-loader --save

What does it do ?

This package provides an HTTP Interceptor, and a spinner component (All from SpinKit at the moment). The HTTP interceptor listens to all HTTP requests and shows a spinner / loader indicator during pending http requests.

Angular 4 / Angular 5

The latest module version compatible with angular 4 is 0.3.4. If you want to use Angular 5, use versions 0.4.0 and above.

If you experience errors like below, please double check the version you use.

ERROR in Error: Metadata version mismatch for module [...]/angular/node_modules/ng-http-loader/ng-http-loader .module.d.ts, found version x, expected y, resolving symbol AppModule in [...]/angular/src/app.module.ts

Requirements - HttpClientModule

Performing http requests with the HttpClientModule API is mandatory. Otherwise,the spinner will not be fired at all.

See this blog post for an HttpClientModule introduction.

Usage

From your Angular AppModule:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
[...]
import { AppComponent } from './app.component';
import { HttpClientModule } from '@angular/common/http'; <============
import { NgHttpLoaderModule } from 'ng-http-loader/ng-http-loader.module'; <============

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule, <============ (Perform http requests with this module)
    NgHttpLoaderModule, <============
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

or (splitted modules mode for more convenience)

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
[...]
import { AppComponent } from './app.component';
import { HttpClientModule } from '@angular/common/http'; <============
import { NgHttpLoaderComponentsModule } from 'ng-http-loader/components/ng-http-loader-components.module'; <============
import { NgHttpLoaderServicesModule } from 'ng-http-loader/services/ng-http-loader-services.module'; <============

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule, <============ (Perform http requests with this module)
    NgHttpLoaderServicesModule, <============
    NgHttpLoaderComponentsModule, <============
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

In your app.component.html, simply add :

<spinner></spinner>

Customizing the spinner

You can customize the background-color, the spinner type and the debounce delay (ie. after how many milliseconds the spinner will be displayed, if needed):

<spinner 
    [backgroundColor]="'#ff0000'"
    [spinner]="spinkit.skWave"
    [debounceDelay]="200"
>
</spinner>

To use this syntax, you must reference the Spinkit const as a public property in your app.component.ts:

import { Spinkit } from 'ng-http-loader/spinkits'; <============

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css'],
})
export class AppComponent {
    public spinkit = Spinkit; <============
    [...]
}

The different spinners available are referenced in this class.

Otherwise, you can simply reference the chosen spinner as a simple string:

<spinner backgroundColor="#ff0000" spinner="sk-wave"></spinner>

Requests filtering

You can also filter the http requests that shouldn't be caught by the interceptor by providing an array of regex patterns:

<spinner [filteredUrlPatterns]="['\\d', '[a-zA-Z]', 'my-api']"></spinner>

Misc

Each Spinkit component defined in SPINKIT_COMPONENTS can be used independently.

Credits

Tobias Ahlin, the awesome creator of SpinKit.

About

Angular 5+ http interceptor - intercepts automatically all http requests and shows a spinkit spinner / loader / progress bar

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 57.6%
  • CSS 23.5%
  • HTML 15.3%
  • JavaScript 3.6%