我正在使用角度2和Ngrx.
我有主要组件应用程序,我在NgOnInit函数中订阅应用程序标题
我有子组件Home,我也在NgOnInit调度这个标题因为我想在用户访问home组件时更改标题.
问题是我的App组件是Home组件的父组件,它首先被调用,所以在我的订阅中我最终得到了应该包含title的未定义对象.
什么是最好的解决方案?
我可以在构造函数中设置初始标题(首先调用它)
我可以在订阅中获得这样的标题:( store || {}).title
或者是否可以在reducer中设置初始状态?
解决方法
最终,如果值只是在模板中输出,您可以始终使用异步管道:
<h1>{{ (someReducer | async)?.title }}</h1>
或者,您可以在reducer本身内设置一些初始状态:
function someReducer (state = {title: 'Home'},action) { switch (action.type) { default: return state; } }
最后,您可以在初始化商店时设置初始状态:
StoreModule.provideStore(reducers,initialState)
希望这会以某种方式帮助你.
汤姆