在我的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 中只有一个订户不可用。所以我的问题是如何处理这种情况?
答案 0 :(得分:1)
登录需要组件时,您可以使用服务调用实现注销,而无需组件。
在这种情况下,订阅者不会是AuthComponent
,而是AuthService
,在注销结束时会再次导航到登录页面。