Ngrx angular 2我应该如何设置初始状态?

时间:2017-02-17 18:38:46

标签: angular ngrx

我正在使用角度2和Ngrx。

我有主要组件应用程序,我在NgOnInit函数中订阅应用程序标题 我有子组件Home,我也在NgOnInit中调度此标题,因为我想在用户访问home组件时更改标题。

问题是我的App组件是Home组件的父组件,它首先被调用,所以在我的订阅中我最终得到了应该包含title的未定义对象。

最佳解决方案是什么? 我可以在构造函数中设置初始标题(首先调用它) 我可以订阅这样的标题:(store || {}).title 或者是否可以在reducer中设置初始状态?

1 个答案:

答案 0 :(得分:7)

最终,如果该值只是在模板中输出,您可以随时使用async管道:

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

或者你可以在reducer本身内设置一些初始状态:

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

最后,您可以在初始化商店时设置初始状态:

StoreModule.provideStore(reducers, initialState)

希望这会以某种方式帮助你。

汤姆