To install this library, run:
$ npm install ng-http-loader --save
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.
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
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.
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>
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>
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>
Each Spinkit component defined in SPINKIT_COMPONENTS can be used independently.
Tobias Ahlin, the awesome creator of SpinKit.