Loading management

Angular Bootstrap 5 Loading management

Displays animation in a container (such as a table) while loading data.

Note: Read the API tab to find all available options and advanced customization


Basic example

Loading automatically init when you set [show] input to true. Loader will take all available space of its container. If you don't use fullscreen loader and want to attach loader to a container, use [container] and specify parent element for mdb-loading component.

Loading...
<div style="height: 300px; width: 100%; z-index: 1029" #container>
  <mdb-loading [show]="true" [container]="container">
    <div class="loading-spinner">
      <div class="spinner-border loading-icon" role="status"></div>
      <span class="loading-text">Loading...</span>
    </div>
  </mdb-loading>
</div>

Colors

You can set a different colors to loader with text-* color like primary, success, danger, warning.

Loading...
<div style="height: 300px; width: 100%; z-index: 1029" #container>
  <mdb-loading [show]="true" [container]="container">
    <div class="loading-spinner">
      <div class="spinner-border loading-icon text-success" role="status"></div>
      <span class="loading-text text-success">Loading...</span>
    </div>
  </mdb-loading>
</div>

Custom spinners

MDB Growing spinner

If you don’t fancy a border spinner, switch to the grow spinner. While it doesn’t technically spin, it does repeatedly grow!

Loading...
<div
  style="height: 300px; width: 100%; z-index: 1029"
  #container
>
  <mdb-loading [show]="true" [container]="container">
    <div class="loading-spinner">
      <div class="spinner-grow loading-icon" role="status"></div>
      <span class="loading-text">Loading...</span>
    </div>
  </mdb-loading>
</div>

Font Awesome

Use font awesome spinner icon to indicate loading status.

Loading...
<div style="height: 300px; width: 100%; z-index: 1029" #container>
  <mdb-loading [show]="true" [container]="container">
    <div class="loading-spinner">
      <div class="fas fa-spinner fa-spin fa-2x loading-icon"></div>
      <span class="loading-text">Loading...</span>
    </div>
  </mdb-loading>
</div>

Delay

Use following code to delay the appearance of loading spinner.

<div>
  <div class="h2 d-flex justify-content-center" *ngIf="showTimer">{{ time }}</div>
  <div class="form-check form-switch my-3">
    <input
      mdbCheckbox
      (checkboxChange)="onChange()"
      class="form-check-input"
      type="checkbox"
      id="flexSwitchCheckDefault"
    />
    <label class="form-check-label" for="flexSwitchCheckDefault">Switch Delay</label>
  </div>
  <mdb-loading [show]="show" [fullscreen]="true">
    <div class="loading-spinner">
      <div class="spinner-border loading-icon" role="status"></div>
      <span class="loading-text">Loading...</span>
    </div>
  </mdb-loading>
</div>
import { Component } from '@angular/core';

@Component({
  selector: 'app-loading-management',
  templateUrl: './loading-management.component.html',
  styleUrls: ['./loading-management.component.scss'],
})
export class LoadingManagementComponent {
  show = false;
  showTimer = false;
  time = 4;

  constructor() {}

  onChange() {
    this.showTimer = true;
    const delayTimer = setInterval(() => {
      if (this.time <= 1) {
        clearInterval(delayTimer);
        this.show = true;
        setTimeout(() => {
          this.show = false;
        }, 5000);
      }
      this.time -= 1;
    }, 1000);
  }
}

Full screen

Use the code below to add spinner for larger content areas or for full-screen loading.

<div>
  <button class="btn btn-primary" id="btn-full-screen" (click)="showLoader()">
    Full screen
  </button>
</div>
<mdb-loading [show]="show" [fullscreen]="true">
  <div class="loading-spinner">
    <div class="spinner-border loading-icon" role="status"></div>
    <span class="loading-text">Loading...</span>
  </div>
</mdb-loading>
import { Component } from '@angular/core';

@Component({
  selector: 'app-loading-management',
  templateUrl: './loading-management.component.html',
  styleUrls: ['./loading-management.component.scss'],
})
export class LoadingManagementComponent {
  show = false;

  constructor() {}

  showLoader(): void {
    this.show = true;
    setTimeout(() => {
      this.show = false;
    }, 5000);
  }
}

Loading management - API


Import

import { MdbLoadingModule } from 'mdb-angular-ui-kit/loading';
…
@NgModule ({
  ...
  imports: [MdbLoadingModule],
  ...
})

Inputs

Name Type Default Description
backdrop boolean true Whether loader backdrop should be displayed
backdropClass string - Defines custom backdrop class
container HTMLElement - Defines parent container of the loader component
fullscreen boolean false Whether fullscreen loader should be displayed