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

Joh*_*ler 6 angular2-routing angular

我有一个路由配置

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

我想听听Journal的@Output发出的事件.当模板中唯一的引用是,我该怎么做呢

<a class="nav-item nav-link" [routerLink]="['Journal']">Journal</a>
Run Code Online (Sandbox Code Playgroud)

Cob*_*ger 0

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

管理父组件和子组件之间状态的正确方法是共享服务。本质上,它可以归结为以下步骤:

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

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