私は、ネストされた子コンポーネント内のボタンを使用して、私のメインのアプリケーションテンプレートの上部にあるサイドナビゲーションメニューを、切り替えしようとしています。私は親のsidenavコンポーネントに到達してsidenav.open()
に伝える方法を理解できません。アクセス親@ComponentとVARS
私は、子コンポーネントの@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