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

时间:2016-03-08 21:52:11

标签: 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 },
])

我想听听期刊@Output发出的事件。当我在模板中唯一的参考是

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

1 个答案:

答案 0 :(得分:0)

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

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

  1. 写一项服务。
  2. 不是从您的模块提供服务,而是从父组件提供服务(使其无法访问外部代码)。
  3. 将服务注入父母和任何需要它的孩子。
  4. 这可以同样适用于传入孩子的状态以及从孩子收到的通知,并且不会污染路线设置。