angular 基于rxjs的Subject全局廣播監(jiān)聽
- 創(chuàng)建服務(wù)my.observer.service.ts
import { Subject } from 'rxjs';
import { OaItem } from '../api/settingApi.service'; // 范型接口, 可不設(shè)置接口,
// 不過(guò)最好養(yǎng)成寫接口約束的習(xí)慣,有利于開發(fā)
oaInfo = new Subject<OaItem>();
- 要暴露的文件內(nèi):
import { OaItem } from '../../api/settingApi.service';
import { MyObserverService } from '../../service/my.observer';
changeOa(event: OaItem): void {
this.myObserver.oaInfo.next(event);
}
- 你要監(jiān)聽的組件中:
import { MyObserverService } from '../../service/my.observer';
ngOnInit(): void {
this.myObserver.oaInfo.subscribe( res => {
this.currentOa = res;
});
}
- 為了防止其他頁(yè)面訪問(wèn)到該方法硬猫,一般會(huì)添加防抖
ngOnInit(): void {
if (observerOpen) {
this.myObserver.oaInfo.subscribe( res => {
this.currentOa = res;
});
}
}
ngOnDestroy() {
this.observerOpen = false;
}