Roadmap › Angular (2 → 21) › Module: Routing and Forms
Lessons in this course (16)
13. Routing, lazy loading, guards and resolvers
Intermediate★ Must knowLesson 13 of 16
ts
export const routes: Routes = [
{ path: "", component: Home },
{ path: "orders", loadComponent: () => import("./orders/order-list").then(m => m.OrderList) }, // lazy component
{ path: "admin", canActivate: [authGuard], canMatch: [adminGuard],
loadChildren: () => import("./admin/admin.routes").then(m => m.ADMIN_ROUTES) }, // lazy route group
{ path: "orders/:id", component: OrderDetail, resolve: { order: orderResolver } },
{ path: "**", component: NotFound },
];
export const authGuard: CanActivateFn = () =>
inject(AuthService).isLoggedIn() ? true : inject(Router).createUrlTree(["/login"]);
export const orderResolver: ResolveFn<Order> = route =>
inject(OrderService).get(Number(route.paramMap.get("id")));html
<a routerLink="/orders" routerLinkActive="active">Orders</a>
<a [routerLink]="['/orders', o.id]" [queryParams]="{ tab: 'lines' }">Open</a>
<router-outlet />Guards: canActivate, canActivateChild, canDeactivate (unsaved changes), canMatch (choose route/lazy load), resolve. Read params: ActivatedRoute.paramMap (observable) or component input binding (withComponentInputBinding() → id = input<string>()). Preloading strategies: withPreloading(PreloadAllModules).