src/app/services/alert.service.ts
Properties |
|
Methods |
constructor(router: Router)
|
||||||
|
Defined in src/app/services/alert.service.ts:8
|
||||||
|
Parameters :
|
| clear |
clear()
|
|
Defined in src/app/services/alert.service.ts:39
|
|
Returns :
void
|
| error | ||||||||||||
error(message: string, keepAfterRouteChange)
|
||||||||||||
|
Defined in src/app/services/alert.service.ts:34
|
||||||||||||
|
Parameters :
Returns :
void
|
| getAlert |
getAlert()
|
|
Defined in src/app/services/alert.service.ts:25
|
|
Returns :
Observable<any>
|
| success | ||||||||||||
success(message: string, keepAfterRouteChange)
|
||||||||||||
|
Defined in src/app/services/alert.service.ts:29
|
||||||||||||
|
Parameters :
Returns :
void
|
| Private keepAfterRouteChange |
Default value : false
|
|
Defined in src/app/services/alert.service.ts:8
|
| Private subject |
Default value : new Subject<any>()
|
|
Defined in src/app/services/alert.service.ts:7
|
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();
}
}