首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有延迟加载模块的Ngrx

带有延迟加载模块的Ngrx
EN

Stack Overflow用户
提问于 2020-04-12 08:11:43
回答 1查看 651关注 0票数 0

假设在我的应用程序中,我有以下延迟加载模块:

  • 登录模块
  • 管理模块

App-routing.module.ts `

代码语言:javascript
运行
AI代码解释
复制
const routes: Routes = [
  { path: 'login', loadChildren: () => import('./login/login.module').then(m => m.LoginModule) },
  { path: 'admin', loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule), canLoad: [AdminGuard]}]

`

在LoginModule中,我创建了StoreModule.forFeature('login', fromLogin.authReducer)

成功登录后,程序重定向到管理页(模块)

商店发出新的动作:this.store.dispatch(login({some object}));一切都很好。

问题

当我试图刷新管理模块上的页面时,我将丢失来自LoginModule.的存储

正如您在路由模块中看到的那样,我使用的是“保护”内部的canLoad逻辑,它应该更改LoginModule存储中的状态,但是在刷新页面后,我丢失了状态。

LoginModule中工作良好并更改状态。

AdminModule上刷新页面后无法工作--商店是空的:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-12 10:33:48

一个可能的解决方案是将您的存储管理代码放在共享模块中,因为它是在所有延迟加载的功能模块之间共享的(如果您从未使用过共享模块,则可以查看此链接以供参考)。注意,您需要在应用程序模块中导入共享模块.

如果您现在开始一个新项目,我将建议您查看NGXS,这是NgRX的另一种选择。我遇到过许多程序员,他们决定将代码从NgRX迁移到NGXS,因为这降低了状态管理的复杂性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61174444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档