Egyszerű adattárolás:
Egy service tartalmazhat változókat, amelyekre több komponensnek is szüksége lehet. Ez lehetővé teszi az adatok egyszerű tárolását és elérését.
@Injectable({
providedIn: 'root'
})
export class DataService {
data: any;
}
BehaviorSubject és Observable használata:
Az RxJS könyvtárnak köszönhetően egy service használhat BehaviorSubject-et, hogy adatokat közvetítsen, és az ebből származó Observable-t használva az összetevők tudják figyelni az adatváltozásokat.
@Injectable({
providedIn: 'root'
})
export class DataService {
private dataSubject = new BehaviorSubject<any>(null);
data$ = this.dataSubject.asObservable();
setData(data: any): void {
this.dataSubject.next(data);
}
}
Egy komponensben:
constructor(private dataService: DataService) {
this.dataService.data$.subscribe(data => {
// itt dolgozd fel az adatot
});
}
Események közvetítése:
Ha egy komponensnek értesítést kell küldenie egy másik komponens számára, ez szintén elérhető egy service segítségével.
@Injectable({
providedIn: 'root'
})
export class EventService {
private eventSubject = new Subject<any>();
event$ = this.eventSubject.asObservable();
triggerEvent(data: any): void {
this.eventSubject.next(data);
}
}
- Ebben a példában az
EventService-en keresztül egy komponens értesítheti a többi komponenst egy eseménnyel.
Az előnye ennek a megközelítésnek, hogy könnyen lehet tesztelni az alkalmazást, és az alkalmazás logikája jól szeparált és moduláris marad. Emellett a service-ek használata lehetővé teszi az adatok és az események központi kezelését, így az alkalmazás egészében következetes állapotot és viselkedést biztosíthatunk.