Проблема не только в маршрутах, но давайте сделаем это шаг за шагом:
{ path: '**', redirectTo: '/hello' }
, redirectTo
не требует конечной косой черты,
заменить на { path: '**', redirectTo: 'hello' }
для определения отложенной загрузки вы забыли имя модуля
app.routing.module.ts
loadChildren: './pages/hello/hello-pages.module'
loadChildren: './pages/goodbye/goodbye-pages.module'
replaceна
loadChildren: './pages/hello/hello-pages.module#HelloPagesModule'
, но для goodbye-pages.module
вы скопировали HelloPagesModule
, предположим, что это должно быть GoodByePagesModule
loadChildren: './pages/goodbye/goodbye-pages.module#GoodByePagesModule'
не знаю, почему вы импортируете GoodbyeRoutes
в goodbye-pages.module.ts
, а затем переопределяете его, кажется, снова - неправильное копирование
заменить на //import { GoodbyeRoutes } from '../routes/goodbye.routing.module';
loadChildren: '../routes/goodbye.routing.module#GoodbyeRoutingModule'
- неверный путь
заменить на loadChildren: '../../routes/goodbye.routing.module#GoodbyeRoutingModule'
если вы используете component
с loadChildren
например: app.routing.module.ts
{
path: 'hello',
component: HelloComponent,
data: {
title: 'Hello pieces'
},
loadChildren: './pages/hello/hello-pages.module#HelloPagesModule'
},
HelloComponent
должно быть declared
в AddModule
(это нормально), но я полагаю, что вы смешали объявление в маршрутах, и HelloComponent
, такое же, как GoodbyeComponent
, должно использоваться в их модулях
, поэтому нет необходимости использовать component: HelloComponent,
и component: GoodbyeComponent,
внутри app.routing.module.ts
И Импорт NgModule должен использоваться только для модулей
так что app.module.ts
@NgModule({
imports: [ BrowserModule, AppRoutingModule, FormsModule ],
declarations: [ AppComponent, HelloComponent, GoodbyeComponent ],
exports: [HelloComponent],
bootstrap: [ AppComponent ]
})
заменить на
@NgModule({
imports: [ BrowserModule, AppRoutingModule, FormsModule ],
declarations: [ AppComponent],
bootstrap: [ AppComponent ]
})
, а затем hello-pages.module.ts
@NgModule({
imports: [RouterModule.forChild(HelloRoutes), CommonModule, FormsModule, HelloComponent],
declarations: [GloryhammerComponent, SabatonComponent, SweetComponent],
exports: []
})
заменено на
@NgModule({
imports: [RouterModule.forChild(HelloRoutes), CommonModule, FormsModule],
declarations: [HelloComponent, SabatonComponent, SweetComponent],
exports: []
})
Чтобы сделать маршрутизацию работ:
Вы должны добавить <router-outlet></router-outlet>
внутри вашего app.component.html
После того, как точка 6 приложение будет работать (но не на всех), чтобы завершить его, вы должны исправить также «ленивые» маршруты, поэтому на основе точка 5
hello.routing.module.ts
@NgModule({
imports: [RouterModule.forChild(LazyHelloRoutes), CommonModule, HelloComponent],
declarations: [],
exports: [HelloComponent]
})
заменить на
@NgModule({
imports: [RouterModule.forChild(LazyHelloRoutes), CommonModule, HelloPagesModule],
declarations: [],
exports: []
})
и goodbye.routing.module.ts
@NgModule({
imports: [RouterModule.forChild(LazyGoodbyeRoutes), CommonModule, GoodbyeComponent],
declarations: [],
exports: [GoodbyeComponent]
})
заменить на
@NgModule({
imports: [RouterModule.forChild(GoodbyeRoutes), CommonModule, FormsModule],
declarations: [GoodbyeComponent, LouComponent, DijouComponent, HermesComponent],
exports: [GoodbyeComponent]
})
после всех этих шагов все будет работать как положено
Изменено Демо