intermediate
Routing
Проектируйте деревья маршрутов: lazy loading, guards, resolvers, params, nested outlets и компромиссы preloading.
Angular Router сопоставляет URL config с components через `RouterModule` или standalone `provideRouter`. Lazy `loadComponent` / `loadChildren` делят бандлы. Guards (`canActivate`, `canMatch`) защищают маршруты; resolvers prefetch до activation.
{
path: 'admin',
canActivate: [authGuard],
loadChildren: () => import('./admin/routes').then((m) => m.ADMIN_ROUTES),
}
Вложенный `router-outlet` — master-detail. Preloading балансирует первую загрузку и latency последующей навигации.
На интервью: guard vs resolver, paramMap Observables, secondary outlets для modals.
Типовые ошибки: тяжёлый resolver блокирует навигацию, side effects guards вместо services, лишний reload parent routes.
Компромисс: богатые возможности навигации (guards, resolvers, lazy routes) против стоимости конфигурации и настройки preload.
Чеклист:
- Lazy-load зон фич.
- Guards для auth; resolvers для обязательных data.
- paramMap + switchMap.
- Preloading под цели UX.