Angular2 事件订阅没有触发?

Angular2 Event subscription not firing?

我有一个具有以下结构(三个组件)的系统:

Grand-Father -> Father -> Children

还有一个服务:Service 上面有一个 EventEmitter。

在所有三个组件上,我都将服务设置为提供者,将其添加到构造函数并订阅事件发射器:

this.subscription = this._service.eemiter.subscribe(data=> this.init(data));

问题是,它只会在从触发事件的服务调用方法的组件上触发。我的猜测是,通过以这种方式定义它们,每个组件都会得到不同的 Service 而不是相同的,因此该事件只能由调用触发方法的组件看到。

为了让所有三个组件都能够订阅相同的服务并实际捕获事件,我应该进行什么样的设计?

如果将它添加到每个组件的提供程序,每个组件都会获得自己的服务实例(不共享)。
将其添加到 bootstrap(AppComponent, [MySharedService]) 或常见的 parent 元素。
提供者列表中带有 MyService 的 parent 元素是服务实例的根范围。所有 children 都获得相同的实例(除了中间的另一个组件在提供者列表中也有 MyService)。