File

src/app/services/alert.service.ts

Index

Properties
Methods

Constructor

constructor(router: Router)
Parameters :
Name Type Optional
router Router No

Methods

clear
clear()
Returns : void
error
error(message: string, keepAfterRouteChange)
Parameters :
Name Type Optional Default value
message string No
keepAfterRouteChange No false
Returns : void
getAlert
getAlert()
Returns : Observable<any>
success
success(message: string, keepAfterRouteChange)
Parameters :
Name Type Optional Default value
message string No
keepAfterRouteChange No false
Returns : void

Properties

Private keepAfterRouteChange
Default value : false
Private subject
Default value : new Subject<any>()
import { Injectable } from '@angular/core';
import { Router, NavigationStart } from '@angular/router';
import { Observable, Subject } from 'rxjs';

@Injectable({ providedIn: 'root' })
export class AlertService {
    private subject = new Subject<any>();
    private keepAfterRouteChange = false;

    constructor(private router: Router) {
        // clear alert messages on route change unless 'keepAfterRouteChange' flag is true
        this.router.events.subscribe(event => {
            if (event instanceof NavigationStart) {
                if (this.keepAfterRouteChange) {
                    // only keep for a single route change
                    this.keepAfterRouteChange = false;
                } else {
                    // clear alert message
                    this.clear();
                }
            }
        });
    }

    getAlert(): Observable<any> {
        return this.subject.asObservable();
    }

    success(message: string, keepAfterRouteChange = false) {
        this.keepAfterRouteChange = keepAfterRouteChange;
        this.subject.next({ type: 'success', text: message });
    }

    error(message: string, keepAfterRouteChange = false) {
        this.keepAfterRouteChange = keepAfterRouteChange;
        this.subject.next({ type: 'error', text: message });
    }

    clear() {
        // clear by calling subject.next() without parameters
        this.subject.next();
    }
}

results matching ""

    No results matching ""