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

6

我正在使用Angular 2和Ngrx。

我有一个主要组件App,在其中我在NgOnInit函数中订阅应用程序标题,同时我有一个子组件Home,在其中我也在NgOnInit函数中分派此标题,因为我希望当用户访问Home组件时可以更改标题。

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

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

1个回答

8

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

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

或者您可以在reducer内部设置一些初始状态:

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

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

StoreModule.provideStore(reducers, initialState)

希望这对您有所帮助。
汤姆

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接