Ленивая загрузка в Angular 6, в результате чего невозможно сопоставить ни один маршрут - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь добиться ленивой загрузки в моем приложении Angular. Вот мои маршруты:

приложение-routing.module.ts

const routes: Routes = [
  {
    path: '',
    loadChildren: './customer/customer.module#CustomerModule',
    pathMatch: 'full'
  }
];

и в модуле:

  imports: [RouterModule.forRoot(routes)],

клиент-routing.module.ts

export const routes: Routes = [
  { path: '', component: ComparePageComponent },
  { path: 'funds', component: FundSelectionComponent },
  { path: ':service', component: ComparePageComponent },
  { path: '**', component: PageNotFoundComponent },
];

и в модуле:

imports: [
    RouterModule.forChild(routes)
  ],

Теперь у меня есть логика, которая загружает страницу /profile, когда нет параметров пути, то есть когда URL-адрес равен '' (this._router.navigate(['', 'profile'])), для которого я уже определил путь в своем клиентском модуле { path: ':service', component: ComparePageComponent }

Но при запуске приложения возникает следующая ошибка:

ОШИБКА Ошибка: Uncaught (в обещании): Ошибка: не удается сопоставить ни один маршрут. URL Сегмент: «профиль» Ошибка: не может соответствовать ни один маршрут Сегмент URL: 'профиль' в ApplyRedirects.push ../ node_modules/@angular/router/fesm5/router.js.ApplyRedirect

Не совсем уверен, где я иду не так.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

У вашего AppRoutingModule только один маршрут, который загружает CustomerModule для пользователя. Но это тоже на пустом маршруте ('').

Но когда вы переходите пользователя к маршруту /profile, Angular ищет конфигурацию, соответствующую пути 'profile' в вашем AppRoutingModule.

Но так как он не может найти его там, он выдает эту ошибку.

Чтобы Angular смотрел за пределы пустого пути (''), он должен использовать стратегию prefix pathMatch, которая используется по умолчанию, если вы не укажете ее как full.

Возможно, вы захотите попробовать удалить pathMatch: 'full' из конфигурации вашего маршрута в AppRoutingModule, чтобы исправить это.

0 голосов
/ 06 ноября 2018

Вы выполнили навигационный путь. Вы должны начать навигацию с root, используя /

this._router.navigate(['/', 'profile']))

...