У меня есть угловое приложение с несколькими модулями, каждый из которых определяет некоторые маршруты.
Приложение (базовый модуль) использует этот AppRoutingModule:
const routes: Routes = [
{path: 'user', loadChildren: 'app/user/user.module#UserModule'},
{path: 'exchange', loadChildren: 'app/exchange/exchange.module#ExchangeModule'},
{path: 'home', component: HomeComponent},
{path: '', redirectTo: '/home', pathMatch: 'full'},
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {
}
Маршрутизатор пользовательского модуля:
@NgModule({
imports: [RouterModule.forChild(
[{
path: '', component: UserComponent,
children: [
{path: '', component: UserProfileComponent, canActivate: [AuthGuardService]},
{path: 'login', component: UserLoginComponent},
{path: 'register', component: UserRegisterComponent},
{path: 'confirm/:confirmcode', component: UserConfirmMailComponent},
{path: 'logout', component: UserLogoutComponent}
]
}]
)],
exports: [RouterModule]
})
export class UserRoutingModule {
}
Маршрутизатор модуля обмена:
@NgModule({
imports: [RouterModule.forChild(
[{
path: '', component: ExchangeComponent,
children: [
{path: '', component: ExchangeListComponent},
{path: ':exchange-name', component: ExchangeDetailComponent},
{path: ':exchange-name/:baseCode', component: ExchangeSelectionComponent},
{path: ':exchange-name/:baseCode/:targetCode', component: ExchangePairComponent},
]
}]
)],
exports: [RouterModule]
})
export class ExchangeRoutingModule {
}
Теперь я могу использовать маршрут http://localhost:4200/exchange/Sample/Base
для доступа к компоненту ExchangeSelectionComponent
, как и ожидалось.
Но когда я перехожу на http://localhost:4200/user/confirm/
и случайно пропустил добавление обязательного параметра confirmcode
, вместо Invalid-Route-Error я получаю тот же ExchangeSelectionComponent
-рорт, что и выше.
Также, когда я пытаюсь открыть http://localhost:4200/thispagedoesnotexist
, я получаю ExchangeDetailComponent
с exchange-name = thispagedoesnotexist
.
Кажется, что все ниже /exchange/
также сопоставляется с базовым корнем /
.
Почему это так и как я могу избежать такого поведения?
Я думал, что каждый маршрут, определенный в маршруте внутри routeChildren
, загружается только лениво, когда к соответствующему родительскому маршруту обращаются и до тех пор даже не касаются.
Я использую Angular 5.2. Заранее спасибо за любой вклад.