Плагин маршрутизатора NGXS нарушает маршрутизацию - PullRequest
0 голосов
/ 13 июня 2018

@ngxs/storage-plugin, используемый с @ngxs/router-plugin, приводит к разрыву маршрутов.Если я удаляю любой из них, маршрутизация работает нормально.С обоими из них, если я набираю URL в браузере, он всегда возвращается к последнему маршруту.Я попытался изменить порядок загрузки этих плагинов (переместить плагин storage к последнему), поведение такое же.

В моем модуле app.routes.ts есть следующие маршруты.

export const routes: Route[] = [
{
  path: 'login',
  children: AUTH_ROUTES
},
{
  path: 'account-verification',
  loadChildren: 'app/account-verification/account-verification.module#AccountVerificationModule'
},
{
  path: 'profile',
  loadChildren: 'app/profile/profile.module#ProfileModule'
},
{
  path: '',
  component: LayoutComponent,
  children: [
    { path: '', loadChildren: 'app/user-dashboard/user-dashboard.module#UserDashboardModule' },
    { path: 'calendar', loadChildren: 'app/calendar/calendar.module#CalendarModule' },
    // { path: 'messages', loadChildren: 'app/messaging/messaging.module#MessagingModule' },
  ],
  canActivate: [ guards.AuthGuard, guards.AccountVerificationGuard ]
}
];

Я могу без проблем перейти от /profile/create (дочерний маршрут в ProfileModule) к login.

Нажатие на кнопки для перехода к маршруту с помощью [routerLink] по-прежнему работает, но если яЯ нахожусь на /profile/create, и я набираю /login в браузере, я сразу возвращаюсь к /profile/create.Вот мой импорт в app.module.ts:

imports: [
BrowserModule,
AuthModule,
CoreModule,
HttpClientModule,
LayoutModule,
AngularFontAwesomeModule,
RouterModule.forRoot(routes, { enableTracing: true }),
NgxsModule.forRoot([]),
NgxsReduxDevtoolsPluginModule.forRoot(),
NgxsStoragePluginModule.forRoot(),
NgxsRouterPluginModule.forRoot(),
ToastrModule.forRoot({
  timeOut: 10000,
  positionClass: 'toast-top-right',
  preventDuplicates: true,
}),
ToastContainerModule,
BrowserAnimationsModule,
FileUploadModule
],

package.json

"dependencies": {
  "@angular/animations": "6.0.4",
  "@angular/cdk": "6.2.1",
  "@angular/common": "6.0.4",
  "@angular/compiler": "6.0.4",
  "@angular/core": "6.0.4",
  "@angular/forms": "6.0.4",
  "@angular/http": "6.0.4",
  "@angular/material": "6.2.1",
  "@angular/platform-browser": "6.0.4",
  "@angular/platform-browser-dynamic": "6.0.4",
  "@angular/router": "6.0.4",
  "@ngxs/router-plugin": "3.1.3",
  "@ngxs/storage-plugin": "3.1.3",
  "@ngxs/store": "3.1.3",

1 Ответ

0 голосов
/ 15 мая 2019

Что я получил в сообществе NXGXS и документах NGXS.Это ошибка в NGXS, но есть временное решение путем упоминания узлов в модуле плагина хранения в качестве ключа опции.

Как @Ryan, упомянутый в комментарии.

NgxsStoragePluginModule.forRoot({ key: ['auth'] })

Но в приведенном выше решении вы будетенужно указать все узлы, которые вы хотите сериализовать.

В канале dev это исправлено, вы можете обновить пакет до @ngxs/store@dev, и это будет исправлено.Обновление пакета до dev решило мою проблему.

Здесь вы можете увидеть журнал изменений. Журнал изменений для NGXS

...