【发布时间】:2017-01-22 17:48:59
【问题描述】:
我正在尝试在我的组件之间进行某种通信,因此我在组件中使用具有 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在控制台中。
我做错了什么?
【问题讨论】:
标签: angular rxjs angular2-services behaviorsubject