RxJs主题在订阅上获得多个值

时间:2020-09-25 09:38:04

标签: angular rxjs subject-observer

我的Angular服务中有一个这样的主题:

private sub = new Subject();


sendSub(page: page) {
    this.sub.next(page);
}

getSub(): Observable<any> {
    return this.sub.asObservable();
}

在父组件中,我已订阅getSub()。从子组件中,我要发送一个下一个值,但在父组件中,我将获得两个值。

只需要一个值,这样我的代码块就只能执行一次:

subscription: Subscription;

this.subscription = this.pageService
    .getSub()
    .subscribe(
        (data) => {
            this.data = data;
            this.nextSelection();
        }
    );

2 个答案:

答案 0 :(得分:0)

更改

getSub(): Observable<any> {
  return this.sub.asObservable();
} 

getSub: Observable<any> = this.sub.asObservable();

这可确保每个订户使用相同的主题。

答案 1 :(得分:0)

在父组件的构造函数中添加订阅代码。Here is a fiddle of the same

this.appService
    .getSub()
    .subscribe(
        (data) => {
             this.data = data;
             this.nextSelection();
        }
    );