我有一个路由配置
@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)父级和任何需要它的子级。
这对于传递给 child 的状态和从 child 收到的通知同样有效,并且不会污染路由设置。
关于angular - 如何将 EventEmitter 输出附加到路由下的组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35878762/