Angular 2:兄弟组件之间发生的事件

时间:2017-01-02 10:32:03

标签: angular observable eventemitter

在我的Angular 2项目中,我希望兄弟组件之间的事件通信,我已经阅读了一些文章,并在这个主题的stackoverflow上关注了一些问题,现在最后我正在使用使用RXJS的服务EMITTING EVENTS 在这个answer这是一个很好的解决方案。

但我有以下情况。 这是我的 AppComponent html。

<section class="app content-area">
  <fds-header></fds-header>
  <router-outlet></router-outlet>
</section>

我有三个组件 AuthComponent HomeComponent HeaderComponent 。前两个组件在outlet中呈现,最后一个组件有自己的元素/选择器 fds-header 。因此,在插座中呈现的任何组件都是 HeaderComponent 的兄弟。在 HeaderComponent 中有一个注销按钮,注销功能在 AuthComponent 中。我从 HeaderComponent 发出事件并在 AuthComponent 中捕获。问题是当用户成功登录然后他被重定向到 HomeComponent HomeComponent 时刷新页面应用程序时重新初始化,这次 AuthComponent 未创建,因此注销不起作用,因为 AuthComponent 中只有一个订户不可用。所以我的问题是如何处理这种情况?

1 个答案:

答案 0 :(得分:1)

登录需要组件时,您可以使用服务调用实现注销,而无需组件。

在这种情况下,订阅者不会是AuthComponent,而是AuthService,在注销结束时会再次导航到登录页面。