我有一个服务,从信号器集线器获取更新。这些更新包含所有主题的数据。
服务使用者是一些子组件,每个子组件只对一个主题感兴趣。
子组件如何只订阅它关心的主题?
我知道我可以使用BehaviourObject来更新数据,子组件可以选择忽略基于主题的更新。但我想知道是否有更有效的方法来做到这一点。
信号服务代码:
......
private subject = new Subject<any>();
......
this.proxy.on('ReceiveData', (data: any) => {
this.subject.next(data);
});
getData(): Observable<any> {
return this.subject.asObservable();
}
使用此服务的组件:
....
this.subscription = this.signalRService.getData().subscribe(data => {
this.data = data;
});
....
我想做这样的事情:
this.subscription = this.signalRService.getData("cars").subscribe(data => {
// here I only get data about cars
this.data = data;
});
服务getData方法可以包含一个参数来过滤组件需要订阅的主题。
作为旁注,您不需要这样做
this.subject.asObservable()
鉴于主题是一种可观察的
https://github.com/ReactiveX/rxjs/blob/master/doc/subject.md