我正在使用BehaviorSubject实现shareDataService。我的问题是,每次调用服务的next()方法时,任何其他组件中的监听器订阅都会被多次调用,看起来像是接收到了多个相同的消息。这是预期行为吗?如何防止这种情况发生?
该服务是单例。 我不会多次调用changeMessage方法。
该服务是单例。 我不会多次调用changeMessage方法。
@Injectable()
export class ShareDataService {
messageSource = new BehaviorSubject(someData);
currentMessage: Observable = this.messageSource.asObservable();
changeMessage(message) {
this.messageSource.next(message);
}
}
组件中的订阅
ngDoCheck() {
this.shareDataService.currentMessage
.pipe(takeUntil(this.ngUnsubscribe))
.subscribe((message) => {
//Do stuff
}
});
}
next(...)
将值发送给所有观察者(订阅者)。您可能会在同一个组件中创建多个订阅。 - martin