2017-02-17 14 views
5

私は角度2とNgrxを使用しています。Ngrx angular 2初期状態をどのように設定すればよいですか?

私はNgOnInit関数 でアプリのタイトルを購読しています。そして、私はこのタイトルをNgOnInitでもディスパッチしています。ユーザがホームコンポーネントを訪問したときにタイトルを変更したいからです。

問題は、私のAppコンポーネントがホームコンポーネントの親であり、最初に呼び出されるので、私のサブスクライブでは、タイトルを含むべき未定義のオブジェクトになります。

これに最適な解決策は何ですか? コンストラクタで最初のタイトルを設定することができます(最初に呼び出されます) このようなサブスクリプションでタイトルを得ることができます:(store || {}).title または減速機の初期状態を設定する方法はありますか?値がテンプレート内だけで出力された場合

答えて

6

最終的に、あなたは常にasyncパイプを使用することができます。

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

代わりにあなたが減速自体の内部でいくつかの初期状態を設定できます。

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

最後に、店舗の初期化時に初期状態を設定できます。

StoreModule.provideStore(reducers, initialState) 

これは何らかの形であなたを助けてくれることを願っています。

トム

関連する問題