2016-07-05 31 views
0

在我的Angular2應用程序中,我有一些存在於多個組件之外的頁面。在每個頁面刷新導航組件

在我app.component.html我有這樣的:

<router-outlet></router-outlet> 

而且在部件像這樣的HTML:

<div class="container dashboard page"> 
    <app-nav></app-nav> 
    <div class="main"> 
    <p></p> 
    </div> 
    <app-footer></app-footer> 
</div> 

現在,當我打開一個頁面的導航和頁腳總是刷新。這似乎是合乎邏輯的,但假設我需要在我的app.component.html中執行此操作是否正確?

<app-nav></app-nav> 
<router-outlet></router-outlet> 
<app-footer></app-footer> 

這是最佳實踐,是否有另一種方法來避免導航和頁腳刷新?

+0

如果你在路由組件外部有它,它不應該刷新。 –

+0

所以我把導航和頁腳放在app.component中? –

+0

如果你的架構允許的話,那麼是的。 –

回答

0

這是最佳做法,是否有另一種方法來避免導航和 頁腳刷新?

是的。你不希望你的「全局組件」隨路由改變而改變,所以不要把它們放在「路由改變時改變的組件」。 Angular 2是關於組件之間的關係,它們的嵌套是構建應用程序時的關鍵部分:)。

就在幾個參數:

  • 如果你把內router-outlet全局的組件,你會重複同樣的代碼,這是對DRY規則。想象一下對全局組件的任何更改 - 您將不得不更新每一個頁面組件。
  • 如果全局組件的狀態完全依賴於Angular提供的路由器,那麼這是一個糟糕的體系結構。路由器負責路由,如果狀態與當前頁面一致,則頁面組件應負責全局組件的更改。
  • 全局組件和頁面組件之間的通信應該使用具有RxJs主題的服務完成。我已經描述過它here。這樣,您就可以使用單個對象來控制全局組件的狀態,該對象是頁面組件和全局組件之間的橋樑。
相關問題