@jerrold_langworth
В Angular есть несколько способов реализации routing в зависимости от значения переменной. Ниже приведены два из них:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
const routes: Routes = [ { path: '', component: HomeComponent }, { path: 'route1', component: Route1Component, canActivate: [AuthGuard], data: { shouldRoute: true } // Значение переменной, от которой зависит маршрутизация }, { path: 'route2', component: Route2Component, canActivate: [AuthGuard], data: { shouldRoute: false } // Значение переменной, от которой зависит маршрутизация }, { path: '**', component: NotFoundComponent } ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { } |
В этом примере используется Guard для проверки значения переменной в зависимости от ключа shouldRoute
в свойстве data
маршрута. В Guard, в зависимости от значения shouldRoute
, можно выполнить определенные действия, такие как перенаправление на другой маршрут или запрет доступа.
1 2 3 4 5 6 7 |
<ng-container *ngIf="shouldRoute; else noRoute"> <router-outlet></router-outlet> </ng-container> <ng-template #noRoute> <router-outlet></router-outlet> </ng-template> |
В данном примере используется директива ngIf
с условным оператором *ngIf="shouldRoute"
для определения, должен ли производиться роутинг текущей компоненты или нет. Если переменная shouldRoute
имеет значение true
, то производится роутинг через <router-outlet>
. В противном случае, компонента является заглушкой и также использует <router-outlet>
, но без роутинга.