我想切换侧边导航菜单,位于我的主要应用程序模板的顶部使用嵌套子组件中的按钮。我无法弄清楚如何到父母的sidenav组件,告诉它sidenav.open()
。访问父@分量和变量*路由*子组件
我知道@Input和@Output在一个子组件上,但据我了解,使用这个我需要有一些DOM标签给子组件来附加这些?如:
<app>
<sidenav-component #sidenav>...</sidenav-component>
<child [someInput]="some_parent_var" (childOpensNav)="sidenav.open()"></child>
</app>
吨如何做到这一点的文章。问题是我将路由到这个组件,所以没有<child>
标签显式存在于代码中。而是我的代码是这样的:
<app>
<sidenav-component #sidenav>...</sidenav-component>
<router-outlet></router-outlet>
</app>
如果我有被路由到一个子组件,我该怎么做sidenav.open()
或以某种方式从孩子在家长访问组件?
一些想法:我已经做了一些研究并考虑了一些方法,并且不确定它们是否正确或者甚至可以工作......一种方法是使用Injector服务并尝试遍历父级,但这种感觉不对:
// child component
constructor(injector: Injector) {
this.something = injector.parent.get(Something);
}
或可能创建父服务,以某种方式连接到Sidenav组件,然后注射这种服务到孩子?
这实际上就是我试图做的事情。我不相信我发现你的问题。谢谢。希望我会向下滚动并得到一个很好的答案。 – krummens