angular 基于rxjs的Subject全局广播监听

angular 基于rxjs的Subject全局广播监听

  1. 创建服务my.observer.service.ts
import { Subject } from 'rxjs';
import { OaItem } from '../api/settingApi.service'; // 范型接口, 可不设置接口, 
// 不过最好养成写接口约束的习惯,有利于开发

oaInfo = new Subject<OaItem>();
  1. 要暴露的文件内:
import { OaItem } from '../../api/settingApi.service';
import { MyObserverService } from '../../service/my.observer';

changeOa(event: OaItem): void {
    this.myObserver.oaInfo.next(event); 
}
  1. 你要监听的组件中:
import { MyObserverService } from '../../service/my.observer';

ngOnInit(): void {  
  this.myObserver.oaInfo.subscribe( res => {
      this.currentOa = res;
    });
  }
  1. 为了防止其他页面访问到该方法,一般会添加防抖
ngOnInit(): void {     
    if (observerOpen)  {  
      this.myObserver.oaInfo.subscribe( res => {
         this.currentOa = res;
       });
     }
 }
ngOnDestroy() {
   this.observerOpen = false;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容