2017-02-17 9 views
5

Я использую угловые 2 и Ngrx.Ngrx angular 2 Как установить начальное состояние?

У меня есть основное приложение, в котором я подписываюсь на название приложения в функции NgOnInit И у меня есть дочерний компонент. Место, где я отправляю это название также в NgOnInit, я хочу изменить заголовок, когда пользователь посещает домашний компонент.

Проблема в том, что мой компонент App является родительским компонентом Home, и он вызывается первым, поэтому в моей подписке я получаю неопределенный объект, который должен содержать заголовок.

Какое оптимальное решение для этого? Я могу установить начальный заголовок в конструкторе (он называется первым) Я могу получить название в подписке так: (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) 

Надеюсь, это поможет вам в некотором роде.

Том