RxJS 订阅订阅者数量的变化

时间:2021-04-27 13:00:04

标签: angular rxjs rxjs-observables subject-observer

问题: 我正在使用 Subject observable 在组件(在层次结构中相距太远)之间传递字符串数据。当组件订阅或取消订阅时,我希望能够告诉主题有多少订阅者。怎样才能达到上面的效果?抱歉,我是 RxJS 的新手。

背景故事: 我在顶部(导航栏)有一个简单的搜索/过滤器字段。主视图显示一个组件,有些组件是可搜索的,有些则不可搜索。每个可搜索组件订阅搜索/过滤器(通过服务)。 我想在没有订阅者时隐藏搜索/过滤器字段,并在至少有一个订阅者时显示。

我知道上述逻辑可以通过路由归档,但我想通过可观察计数来实现。

1 个答案:

答案 0 :(得分:0)

来自 Rxjs 的 BehaviorSubject 类公开了一组观察者,您可以查询这些观察者以获得观察者的数量。

let obs: BehaviorSubject<string> = new BehaviorSubject("Something");
console.log(obs);
obs.subscribe(() => {
  console.log("Subscriber 1");
});
obs.subscribe(() => {
  console.log("Subscriber 2");
});
console.log(obs.observers.length);
obs.next("Something else");

Stackblitz 示例 here