angular - 如何将 EventEmitter 输出附加到路由下的组件?

标签 angular angular2-routing

我有一个路由配置

@RouteConfig([
    { path: '/', name: 'Start', component: Journal },
    { path: '/register', name: 'Register', component: Register },
    { path: '/login', name: 'Login', component: Login },
    { path: '/settings', name: 'Settings', component: Settings },
])

我想听从 Journal 的 @Output 发出的事件。当我在模板中的唯一引用是

时,我该怎么做
<a class="nav-item nav-link" [routerLink]="['Journal']">Journal</a>

?

最佳答案

我意识到这现在已经很老了,但是将状态传递给路由是不可撤销的。这主要是因为 routerLink 是通用的,可以接受任意数量 的潜在子节点。因此,即使您可以传递状态或处理其事件,您最终也会遇到不必要的复杂性。

管理父子组件之间状态的正确方法是 shared service .本质上,它归结为以下步骤:

  1. 编写服务。
  2. 不是从您的模块而是从父组件提供服务(以使其无法被外部代码访问)。
  3. 将服务注入(inject)父级和任何需要它的子级。

这对于传递给 child 的状态和从 child 收到的通知同样有效,并且不会污染路由设置。

关于angular - 如何将 EventEmitter 输出附加到路由下的组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35878762/

相关文章:

javascript - Angular 2 - 在 View 中操作 rxjs Observable

typescript - ag Grid 使用 angular 和 typescript 搜索数据

Angular Material 7 使用带有拖放功能的网格

angular - Ionic 2 幻灯片锁定

angular - 第二次使用 ng2-dragula 进入页面时出错

angular - 如何在angular2中导航到新标签

javascript - Angular4 - 从页面历史堆栈中删除页面引用

javascript - Angular2 v3 组件路由器 : TypeError: Cannot read property 'split' of undefined

angular - 将数据从子组件传递到父组件(子组件通过路由加载)

Angular2 路由器 : Error: Cannot find primary outlet to load 'InboxComponent'