Если я не упускаю ничего критического, думаю, вы сможете выполнить то, что хотите, только с помощью multicast
, хотя это будет немного необычный вариант использования.
subheaderDataPublic$ = this.subheaderData$.pipe(
multicast(this.subheaderDataSubject$, s => s),
);
Тогдав вашем компоненте вы будете подписываться на subheaderDataPublic$
.
Как правило, вы будете использовать multicast
, например, вот так:
multicast(new Subject(), s => merge(s, s.pipe(...)))
... но если вы передадите его this.subheaderDataSubject$
будет использоваться в качестве промежуточного предмета.Это s => s
выше необходимо, потому что без функции выбора multicast
возвращает экземпляр ConnectableObservable
, который, вероятно, вам не нужен.
РЕДАКТИРОВАТЬ: Возможно, более понятное решение будет использовать просто Observable
конструктор.
subheaderDataPublic$ = new Observable(observer => {
const subscriptions = new Subscription();
subscriptions.add(this.subheaderData$.subscribe(this.subheaderDataSubject$));
subscriptions.add(this.subheaderDataSubject$.subscribe(observer));
return () => subscriptions.unsubscribe();
});