Я работаю над приложением angular 9, в котором я хочу загрузить 2 разных LayoutComponent
-VisitorLayoutComponent
-LoggedInLayoutComponent
, и тогда эти компоненты будут иметь дочерние пути и компоненты.
I want
'localhost:4200' to load VisitorLayoutComponent when user is logged out and show some general landing page html
I want
'localhost:4200' to load LoggedInLayoutComponent when user is logged in and show me user dashboard html in that route path
Я делаю это в своих маршрутах в данный момент, но это просто не работает, я попытался перевернуть последовательность, в которой они были добавлены, но ничего не получалось.
const routes: Routes = [
{
path: '',
component: LoggedInLayoutComponent,
canActivate: [UserGuardService],
children: [
{
path: '',
component: DashboardComponent,
pathMatch: 'full'
}
]
},
{
path: '',
component: VisitorLayoutComponent,
children: [
{
path: '',
component: HomeComponent,
pathMatch: 'full'
}
]
}
];
@NgModule({
imports: [RouterModule.forRoot(routes, { enableTracing: true })],
exports: [RouterModule]
})
export class AppRoutingModule { }
UserGuardService возвращает жестко закодированное значение true или false (для проверки обоих макетов).
Макет, для которого маршрут был зарегистрирован первым, работает, а второй маршрут - нет. Если вы измените порядок, другой макет сработает.