EventBus ile Sistem Geneli Event Yakalama/Fırlatma¶
Sistem genelinde bazı durumlarda eventların dinlenmesi gerekmektedir. Örneğin kullanıcı profil resmini değiştirdiğinde 3 farklı yerde (layout ta ve 3 ününde kullanıcının görebildiğini düşünelim. Ve Her biri farklı component, modul ve dosyalarda) bu değişimi dinleyip o anki resmi son kullanıcıya göstereceğiz. Bu ve benzer durumlar için bu servisi kullanabiliriz. Bu sayede her yer birbiri ile etkileşimli hale gelir.
EventBusService Kullanımı¶
//EventBus servis tarafından yakalanabilecek enumları içerir. Ekleme yapılabilir.
export enum CoreEvents {
ProfilResmiDegisim = 1, // Profil resmi değişim eventi
MenuDegisim = 2, // Menü değişiminde tetiklenir
MenuUpdate = 3, // Bu işlem menünün yenilenmesini tetikler
CloseHelpDesk = 4, // Yardım masası kapatma eventi
}
import { EventBusService } from '@alpata/octapull.core';
// import edilir
constructor(
private eventBusService: EventBusService,
) {}
islemYap(){
// ... çeşitli işlemlerin yapılması
// CoreEvents.CloseHelpDesk adından event fırlatılması. CoreEvents.CloseHelpDesk bir enum olup fırlatılan nesnelerin sabit olması için bu şekilde kullanılır. Event core a eklenebilir, yeni enum yapılıp bu enumdan extend edilebilir veya any tipinde verilebilir.
this.eventBusService.emit(new EmitEvent(CoreEvents.CloseHelpDesk, true));
// ... çeşitli işlemlerin yapılması
}
// Event yakalanması, fırtlatılan event ın dinlenebilmesi için değişken oluşturulur.
private eventBusServiceYardimModal$: Subscription;
ngOnInit() {
// Event dinleme işlemi. Burada en önemli kısım CoreEvents.CloseHelpDesk kısmıdır. CoreEvents.CloseHelpDesk olarak fırlatılan eventlar CoreEvents.CloseHelpDesk tipinde dinlenebilir.
this.eventBusServiceYardimModal$ = this.eventBusService.on(
CoreEvents.CloseHelpDesk,
(res: boolean) => {
if (res) {
// ... çeşitli işlemlerin yapılması
}
}
);
}
ngOnDestroy(): void {
// Sayfa kapatıldığında Event dinleme işlemi sonlandırılır.
this.eventBusServiceYardimModal$?.unsubscribe();
}