我有一个路由配置

@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。从本质上讲,它可以归结为以下步骤:

  • 编写服务。
  • 不是从您的模块提供服务,而是从父组件提供服务(以使外部代码无法访问该服务)。
  • 将服务注入(inject)到父级和需要它的任何子级中。

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

    10-02 04:13