🧠
ngx-crud
  • Introduction
  • API
    • HTTP Operations
    • HTTP Aborting
    • HTTP Caching
    • HTTP Observing
    • HTTP Options
    • HTTP Context
    • HTTP Headers
    • HTTP Params
    • Service Instance
    • Service Options
  • Reference
    • Modules
      • AbortModule
      • CacheModule
      • ObserveModule
      • CrudModule
    • Services
      • AbortService
      • CacheService
      • CommonService
      • CrudService
      • CustomService
      • DeleteService
      • FindService
      • GetService
      • ObserveService
      • PatchService
      • PostService
      • PutService
    • Interceptors
      • AbortInterceptor
      • CacheInterceptor
      • ObserveInterceptor
    • Decorators
      • @ApiUrl
      • @ApiRoute
    • Helpers
      • createUrl
      • createUrlWithId
      • stripUrlParams
  • Examples
    • Services
      • Fully Typed Collection
      • Limited Singleton
    • Components
      • Loader
    • Effects
      • ProfilerEffect
      • ErrorEffect
      • OfflineEffect
  • Links
    • GitHub
Powered by GitBook
On this page
  1. Examples
  2. Components

Loader

Implement a loader.component.tsfile:

import { Component } from '@angular/core';
import { Observable, debounce, timer, mergeMap } from 'rxjs';
import { ObserveService, ObserveStatus } from 'ngx-crud';
import { Store } from 'ngx-crud/observe/observe.interface';

@Component(
{
	selector: 'app-loader',
	styleUrls:
	[
		'./loader.component.scss'
	],
	templateUrl: './loader.component.html'
})
export class LoaderComponent implements OnInit
{
	observeStatus : Observable<ObserveStatus> = this.getObserveStatus();

	constructor(protected observeService : ObserveService)
	{
	}

	protected getObserveStatus() : Observable<ObserveStatus>
	{
		return this.observeService
			.observeAll()
			.pipe(
				mergeMap(value => (value.at(1) as Store).status),
				debounce(observeStatus => timer(observeStatus === 'COMPLETED' ? 2000 : 0))
			);
	}
}

Implement a loader.component.htmlfile:

<div *ngIf="observeStatus | async as observeStatus"
	[class.is-started]="observeStatus === 'STARTED'"
	[class.is-completed]="observeStatus === 'COMPLETED'"
	[class.is-errored]="observeStatus === 'ERRORED'"
	class="component-loader"></div>

Implement a loader.compontent.scss file:

.component-loader
{
	&.is-started
	{
	}

	&.is-completed
	{
	}

	&.is-errored
	{
	}
}
PreviousComponentsNextEffects

Last updated 3 months ago