我正在開發一個小型項目,我正在編寫一個移動的第一個應用程序。 爲此,我打算在屏幕頂部有一個導航欄,在左側有一個菜單滑動屏幕。我希望這些組件在每個頁面/視圖上都可用。處理涉及多個組件的事件有哪些可能性?
我目前的架構是這樣的:
<app-component>
-> <navbar-component>
-> <sidemenu-component>
-> <router-outlet><!-- The different pages will be placed here !--></router-outlet>
現在我希望能夠在navbar-component
點擊一個按鈕,打開sidemenu-component
。
爲此,我需要在sidemenu註冊點擊事件或在導航欄中觸發sidemenu的其他組件的參考。
我最初的想法是使用@Input()
和@Output()
屬性來傳遞組件的引用。
//app-component.html
<navbar-component [parentComponent]="referenceToAppComponent" (instance)="navbarComponent"></navbar-component>
<sidemenu-component [parentComponent]="referenceToAppComponent" (instance)="sidemenuComponent"></sidemenu-component>
不,你不需要組件的引用。只需在這兩個組件之間共享一個服務,並從這個共享服務中發出事件(使用可觀察事件)。 https://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service –
你可能會考慮使用路由器來做到這一點。您可以使用命名的插座,並將菜單的開頭顯示爲路線本身,並通過導航欄導航到路線 –