Angular2 中没有指令的事件传播

Event Propagation without directive in Angular2

我想知道是否有办法将事件从路由内传播到 <router-outlet></router-outlet> 外。

场景就像我们有一个路由说 Home,& HomeComponent 应该向根组件通知一些事情。如果它是 app.component 的直接子代,我们可以在 HomeComponent 中使用 EventEmitter 类型输出 属性 和 <home (eventName)="actionName()"></home> 指令上的事件绑定。但事实并非如此,因为 HomeComponent 是在路由中使用的。

请帮助我提出从路由到根组件的事件传播的正确方法。

您可以使用注入到发送方和接收方组件中的共享服务进行通信(如消息总线)。有关详细信息,请参阅 https://angular.io/docs/ts/latest/cookbook/component-communication.html

或者您可以使用 element.dispatchEvent() 触发冒泡事件。有关详细信息,请参阅 https://developer.mozilla.org/de/docs/Web/API/EventTarget/dispatchEvent