0

我的 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();
        }
    );
4

2 回答 2

0

在父组件的构造函数中添加订阅代码。这是一个相同的小提琴

this.appService
    .getSub()
    .subscribe(
        (data) => {
             this.data = data;
             this.nextSelection();
        }
    );
于 2020-09-25T11:30:30.950 回答
0

改变

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

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

这样可以确保每个订阅者都使用相同的主题。

于 2020-09-25T09:51:33.923 回答