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
)。
我有一个具有以下结构(三个组件)的系统:
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
)。