Ngrx с ленивыми загрузочными модулями - PullRequest
0 голосов
/ 12 апреля 2020

Допустим, в моем приложении у меня есть следующие ленивые загрузочные модули:

  • Модуль входа
  • Модуль администрирования

Маршрутизация приложений .module.ts `

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})); Все отлично работает.


Проблема

Когда я пытаюсь обновить страницу sh в модуле администратора, я теряю хранилище из LoginModule .

Как вы можете видеть в модуле маршрутизации, я использую Guard canLoad logi c внутри охраны должен изменить состояние в LoginModule хранилище, но после обновления страницы sh я ее потерял.


Работает нормально и меняет состояние в LoginModule :

enter image description here


Не работает после обновления страницы sh на AdminModule Магазин пусто: * 10 54 *

1 Ответ

2 голосов
/ 12 апреля 2020

Возможное решение - разместить код управления магазином в общем модуле, так как он распределяется между всеми лениво загруженными функциональными модулями (если вы никогда не использовали общий модуль, вы можете посмотреть по этой ссылке для справки). Обратите внимание, что вам необходимо импортировать общий модуль в модуль приложения.

Если вы сейчас начинаете новый проект, я советую вам проверить NGXS которая является альтернативой NgRX. Я сталкивался со многими программистами, которые решили перенести свой код из NgRX в NGXS, поскольку это облегчает сложность управления состоянием.

...