Тот же маршрут -> загрузить другой макет -> некоторый компонент - PullRequest
0 голосов
/ 25 марта 2020

Я работаю над приложением 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 (для проверки обоих макетов).

Макет, для которого маршрут был зарегистрирован первым, работает, а второй маршрут - нет. Если вы измените порядок, другой макет сработает.

...