httpclient-loading-bar

1.0.0 • Public • Published

@ngx-loading-bar

A fully automatic loading bar with zero configuration for Angular app (http, http-client and router).

Packages

Demo

Table of contents

Getting started

1. Install @ngx-loading-bar:

  # if you use `@angular/common/http` 
  npm install @ngx-loading-bar/http-client --save
 
  # if you use `@angular/http` 
  npm install @ngx-loading-bar/http --save
 
  # if you use `@angular/router` 
  npm install @ngx-loading-bar/router --save
 
  # to manage loading-bar manually 
  npm install @ngx-loading-bar/core --save

2. Import the installed libraries:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
 
import { LoadingBarHttpClientModule } from '@ngx-loading-bar/http-client';
 
// for Http import LoadingBarHttpModule:
// import { LoadingBarHttpModule } from '@ngx-loading-bar/http';
 
// for Router import LoadingBarRouterModule:
// import { LoadingBarRouterModule } from '@ngx-loading-bar/router';
 
// for Core import LoadingBarModule:
// import { LoadingBarModule } from '@ngx-loading-bar/core';
 
import { AppComponent } from './app';
 
@NgModule({
  ...
  imports[
    ...
 
    LoadingBarHttpClientModule
 
    // for Http use:
    // LoadingBarHttpModule,
 
    // for Router use:
    // LoadingBarRouterModule
 
    // for HttpClient use:
    // LoadingBarHttpClientModule
 
    // for Core use:
    // LoadingBarModule.forRoot()
  ],
})
export class AppModule {}

3. Include ngx-loading-bar in your app component:

import { Component } from '@angular/core';
 
@Component({
  selector: 'app',
  template: `
    ...
    <ngx-loading-bar></ngx-loading-bar>
  `,
})
export class AppComponent {}
 

Customize ngx-loading-bar

You can pass the following inputs to customize the view:

Input Description
color The color of loading bar. Default value is #29d.
includeSpinner Hide or show the Spinner. Default value is true.
includeBar Hide or show the Bar. Default value is true.
height The height of loading bar. Default value is 2px.
diameter The diameter of the progress spinner. Default value is 14px.

Ignoring particular requests

The loading bar can also be forced to ignore certain requests, for example, when long-polling or periodically sending debugging information back to the server.

http-client:

Http client doesn't allow passing custom option, in order to achieve that we made a temporary solution (by passing the option throught the header) that will be removed once http-client come with a proper solution.

// ignore a particular $http GET:
httpClient.get('/status', {
  headers: { ignoreLoadingBar: '' }
});

http:

// ignore a particular $http GET:
http.get('/status', {
  { headers: new Headers({ ignoreLoadingBar: '' }) }
});

Manually manage loading service

1. Import the LoadingBarModule

import { NgModule } from '@angular/core';
 
import { LoadingBarModule } from '@ngx-loading-bar/core';
 
@NgModule({
  ...
  imports[
    ...
 
    LoadingBarModule.forRoot(),
  ],
})
export class AppModule {}

2. Inject/Use LoadingBarService

import { Component } from '@angular/core';
import { LoadingBarService } from '@ngx-loading-bar/core';
 
@Component({
  selector: 'app',
  template: `
    ...
    <ngx-loading-bar></ngx-loading-bar>
    <button (click)="startLoading()">start</button>
    <button (click)="stopLoading()">stop</button>
  `,
})
export class App {
  constructor(private loadingBar: LoadingBarService) {}
 
  startLoading() {
    this.loadingBar.start();
  }
  
  stopLoading() {
    this.loadingBar.complete();
  }
}

Integration with Material Progress bar

import { Component } from '@angular/core';
import { LoadingBarService } from '@ngx-loading-bar/core';
 
@Component({
  selector: 'app',
  template: `
    ...
    <mat-progress-bar mode="determinate" [value]="loader.progress$|async"></mat-progress-bar>
  `,
})
export class App {
  constructor(public loader: LoadingBarService) {}
}

Credits

Readme

Keywords

none

Package Sidebar

Install

npm i httpclient-loading-bar

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

43.2 kB

Total Files

46

Last publish

Collaborators

  • vikram0606