is a service for sending and recieving updates in Angular between components.
signal.service.ts
import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs';
import { filter } from 'rxjs/operators';
export enum Signal{
None,
UpdateCustomerList,
UpdateBadgeList,
//...Define more services
}
@Injectable()
export class SignalService {
private sender: any = new BehaviorSubject(Signal.None);
private signal$: Observable<Signal> = this.sender.asObservable();
constructor() { }
public sendSignal(signal: Signal) {
this.sender.next(signal);
}
public onSignal(filterSignal?: Signal): Observable<Signal> {
return this.signal$.pipe(
filter((signal) => filterSignal ? filterSignal === signal : true),
);
}
}
a.component.ts
constructor(
private signalService: SignalService,
){ }
//...
ngOnInit() {
//Subsribe to the Signal Event
this.signalService
.onSignal(Signal.UpdateCustomerList)
.subscribe((signal) => {
this.loadCustomerList(true);
});
}
b.component.ts
//...
this.signalService.sendSignal(Signal.UpdateCustomerList);