2017-02-17 58 views
5

我正在使用角2和Ngrx。Ngrx角度2我應該如何設置初始狀態?

我有主要組件應用程序,我在NgOnInit函數中訂閱應用程序標題 而且我有孩子組件我也在NgOnInit中調用此標題的主頁因爲我想在用戶訪問家庭組件時更改標題。

問題是我的App組件是Home組件的父組件,並且它首先被調用,所以在我的訂閱中,我最終得到了應該包含標題的未定義對象。

這是最好的解決方案是什麼? 我可以在構造函數中設置初始標題(它被稱爲第一個) 我可以像這樣在訂閱中獲得標題:(store || {}).title 或者有什麼方法可以在reducer中設置初始狀態?

回答

6

最終,如果該值是在模板只輸出,你總是可以使用async管:

<h1>{{ (someReducer | async)?.title }}</h1> 

另外,您可以設置減速機本身內部的一些初始狀態:

function someReducer (state = {title: 'Home'}, action) { 
    switch (action.type) { 
     default: 
      return state; 
    } 
} 

最後,您可以設置商店初始化時的初始狀態:

StoreModule.provideStore(reducers, initialState) 

希望這能以某種方式幫助你。

Tom