intermediate

Routing

Design route trees with lazy loading, guards, resolvers, params, nested outlets, and preloading strategy trade-offs.

Angular Router maps URL configs to components with `RouterModule` or standalone `provideRouter`. Lazy `loadComponent` / `loadChildren` splits bundles. Guards (`canActivate`, `canMatch`) protect routes; resolvers prefetch data before activation.

					{
  path: 'admin',
  canActivate: [authGuard],
  loadChildren: () => import('./admin/routes').then((m) => m.ADMIN_ROUTES),
}
				

Nested `router-outlet` builds master-detail layouts. Preloading strategies balance initial load versus later navigation latency.

On interviews: guard versus resolver responsibilities, paramMap Observables, and secondary outlets for modals.

Common pitfalls: heavy resolver blocking navigation, guards with side effects that belong in services, and reloading parent routes unnecessarily.

The trade-off is rich navigation features (guards, resolvers, lazy routes) versus configuration and preload tuning cost.

Checklist:

  • Lazy-load feature areas.
  • Guards for auth; resolvers for required data.
  • Subscribe paramMap with switchMap.
  • Preloading strategy matches UX goals.