我想切換側邊導航菜單,位於我的主要應用程序模板的頂部使用嵌套子組件中的按鈕。我無法弄清楚如何到父母的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