NGXS Select装饰器返回undefined问题求助
问题解决方法
核心问题是NGXS版本与Angular版本不兼容:NGXS v3.8.0仅支持到Angular 14,而你使用的是Angular 15.0.1,版本不匹配导致@Select装饰器无法正常初始化状态流,直接用Store选择则不受此影响。
解决步骤:
升级NGXS到兼容Angular 15的版本
先卸载旧版NGXS依赖(包含你用到的相关插件):npm uninstall @ngxs/store @ngxs/logger-plugin @ngxs/devtools-plugin再安装适配Angular 15的NGXS v4.x版本:
npm install @ngxs/store@^4.0.0 @ngxs/logger-plugin@^4.0.0 @ngxs/devtools-plugin@^4.0.0(如果不需要日志或调试插件,仅安装
@ngxs/store即可)修正组件内的状态查看方式
你当前直接打印Observable对象无法看到实际状态值,需要订阅后查看:ngOnInit(): void { this.sidebarState$.subscribe(state => { console.log(state, 'widgetSidebarState'); }); }升级NGXS后,
@Select装饰器会正常生成状态流,订阅后就能获取正确的状态值。确认State定义的兼容性
NGXS v4.x对State的定义语法基本兼容v3.x,你当前的SidebarState代码无需修改即可正常运行。如果后续遇到API报错,可根据NGXS的升级说明微调。
内容的提问来源于stack exchange,提问作者Imrankhan Pathan
相关产品推荐
相关产品推荐

