angular 4如何仅更新所选组件的服务

问题描述 投票:0回答:1

我有一个服务,从信号器集线器获取更新。这些更新包含所有主题的数据。

服务使用者是一些子组件,每个子组件只对一个主题感兴趣。

子组件如何只订阅它关心的主题?

我知道我可以使用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;
});
angular rxjs
1个回答
0
投票

服务getData方法可以包含一个参数来过滤组件需要订阅的主题。

作为旁注,您不需要这样做

this.subject.asObservable()

鉴于主题是一种可观察的

https://github.com/ReactiveX/rxjs/blob/master/doc/subject.md

© www.soinside.com 2019 - 2024. All rights reserved.