コンポーネント間で何らかの通信を行おうとしているので、コンポーネントで BehaviorSubject と Subscription を持つサービスを次のように使用しています。
サービス (問題に関連するコード):
import { BehaviorSubject } from 'rxjs/BehaviorSubject'
private _clientModalActionSource = new BehaviorSubject<string>('')
modalAction$ = this._clientModalActionSource.asObservable()
public updateClientModalAction(action) {
this._clientModalActionSource.next(action)
console.log('sent')
}
コンポーネント A:
this._api.updateClientModalAction(id)
コンポーネント B:
import { Subscription } from 'rxjs/subscription'
private _subscription: Subscription
ngOnInit() { this._subscription = this._api.modalAction$.subscribe(res => {
this.refreshModal(res)
console.log('received')
})}
コンポーネント B がコンポーネント A の子である場合、これは完全に機能しますが、A がルート コンポーネントであり、B がその内部にある<router-outlet>
(またはその逆) 場合、サブスクリプションに何も受信されずsent
、コンソールにのみ表示されます。
私は何を間違っていますか?