Angular2 + RxJS BehaviorSubject认购不工作的所有组件(Angular2

2019-09-26 08:34发布

我试图做出某种我的组件之间的通信的,所以我用了这样的组件与BehaviorSubject服务和订阅:

服务(代码相关的问题):

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在控制台。

我究竟做错了什么?

Answer 1:

井的问题是简单的比我想,我没有使用上的更高水平的服务,我不应该使用providers: [ApiService]在每个组件中,而不是它应该是仅在较高的根组件。

我希望这会帮助别人。

https://github.com/angular/angular/issues/11618#event-790191142



文章来源: Angular2 + RxJS BehaviorSubject subscription not working on all components