Angular 如何处理asObservable()公开的私有主题的多个订阅

Angular 如何处理asObservable()公开的私有主题的多个订阅,angular,typescript,rxjs,Angular,Typescript,Rxjs,我遵循一种常见模式,角度服务有一个私有的主题,它公开了一个公共的可观察的,如下所示: private somethingSubject = new Subject<number>(); something$ = this.somethingSubject.asObservable(); import { shareReplay } from 'rxjs/operators'; .... private somethingSubject = new Subject<number

我遵循一种常见模式,角度服务有一个私有的
主题
,它公开了一个公共的
可观察的
,如下所示:

private somethingSubject = new Subject<number>();
something$ = this.somethingSubject.asObservable();
import { shareReplay } from 'rxjs/operators';
....
private somethingSubject = new Subject<number>();
something$ = this.somethingSubject.asObservable().pipe(shareReplay(1));
private something Subject=new Subject();
something$=this.somethingSubject.asObservable();
在我的具体案例中,保持主题的私密性是有意义的,但是如何使多个订阅者都可以使用它呢


换句话说,受试者是多组演员,而观察者是单组演员。我能否在阻止外部组件调用的同时获得一个多播可观察。下一个主题是?

这可能无法回答您的问题,但我认为
shareReplay(1)
可能有助于您进行可观察的多播

大概是这样的:

private somethingSubject = new Subject<number>();
something$ = this.somethingSubject.asObservable();
import { shareReplay } from 'rxjs/operators';
....
private somethingSubject = new Subject<number>();
something$ = this.somethingSubject.asObservable().pipe(shareReplay(1));

阅读有关
shareReplay

的更多信息,您将获得一个
something$
的实例。或者我不明白你的问题,但当主体是多播时,可观察到的不是单播吗。是否可以让它多播,但阻止其他组件更改主题?