вложенная маршрутизация в ионном угле - PullRequest
0 голосов
/ 03 марта 2019

Я использую Ionic 4

Я структурировал свое приложение по страницам, имеющим следующую иерархию

| app
  |- tabs
     |- tabs.page.ts
     |- tabs.module.ts
     |- tabs.routing.module.ts
  |- pages
     |- profile
        |- profile
           |- profile.module.ts
           |- profile.page.ts
        |- profile.module.ts
        |- profile-routing.module.ts
     |- pages.module.ts
     |- pages-routing.module.ts
  |- app.component.ts
  |- app.module.ts
  |- app-routing.module.ts

Содержимое app-routing.module.ts

const routes: Routes = [
  { path: '', redirectTo: 'tabs', pathMatch: 'full'},
  { path: 'tabs', loadChildren: './tabs/tabs.module#TabsPageModule', canActivate: [AuthGuardService]},
];
@NgModule({
  imports: [
    RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
  ],
  exports: [RouterModule]
})
export class AppRoutingModule {}

Затем tabs.routing.module.ts

const routes: Routes = [
  {
    path: '',
    component: TabsPage,
    loadChildren: '../pages/pages.module#PagesModule'
  }
];

@NgModule({
  imports: [
    RouterModule.forChild(routes)
  ],
  exports: [RouterModule]
})
export class TabsPageRoutingModule {}

Что дополнительно загружает PagesModule исодержимое pages-routing.module.ts

const routes: Routes = [
    { path: '', redirectTo: 'profile', pathMatch: 'full'},
    { path: 'profile', loadChildren: './profile/profile.module#ProfileModule'},
];
@NgModule({
    imports: [
        RouterModule.forChild(routes)
    ],
    exports: [RouterModule]
})
export class PagesRoutingModule {}

и содержимое profile-routing.module.ts

const routes: Routes = [
    { path: '', loadChildren: './profile/profile.module#ProfilePageModule'},
];
@NgModule({
    imports: [
        RouterModule.forChild(routes)
    ],
    exports: [RouterModule]
})
export class ProfileRoutingModule {}

Но при посещении

/tabs/profile

выдается ошибка как

ОШИБКА Ошибка: «Uncaught (в обещании): ошибка: не удается найти« ProfilePageModule »в« ./profile/profile ».модуль '

Замена {путь:' ', loadChildren:' ./profile/profile.module#ProfilePageModule' innovative , в profile-routing.module.ts с {путь: '', компонент: ProfilePage} работает.

1 Ответ

0 голосов
/ 04 марта 2019

Почему у вас есть два файла "profile.module.ts" в каталоге профиля?При ленивой загрузке убедитесь, что ваш путь loadChildren указывает на файл, в который экспортируется файл «ProfilePageModule», учитывая вашу ошибку. Я предполагаю, что вы указываете на неправильный «profile.module.ts»

Я бы сказал, что {path: '', component: ProfilePage} работает, так как он загружается без демонстрационного проекта для просмотра кода, который трудно сказать, но вы пробовали:

const routes: Routes = [
    { path: '', loadChildren: './profile.module#ProfilePageModule'},
];
@NgModule({
    imports: [
        RouterModule.forChild(routes)
    ],
    exports: [RouterModule]
})
export class ProfileRoutingModule {}
...