The Angular Router enables client-side navigation between views, supporting nested routes, lazy loading, route guards, and resolvers.
// app.routes.ts
import { Routes } from '@angular/router';
export const routes: Routes = [
{ path: '', redirectTo: 'home', pathMatch: 'full' },
{ path: 'home', loadComponent: () => import('./home/home.component').then(m => m.HomeComponent) },
{ path: 'users', loadComponent: () => import('./users/user-list.component').then(m => m.UserListComponent) },
{ path: 'users/:id', loadComponent: () => import('./users/user-detail.component').then(m => m.UserDetailComponent) },
{ path: '**', loadComponent: () => import('./not-found/not-found.component').then(m => m.NotFoundComponent) },
];
// app.config.ts
import { provideRouter, withComponentInputBinding } from '@angular/router';
import { routes } from './app.routes';
export const appConfig: ApplicationConfig = {
providers: [
provideRouter(routes, withComponentInputBinding()),
],
};
<!-- app.component.html -->
<nav>
<a routerLink="/home" routerLinkActive="active">Home</a>
<a routerLink="/users" routerLinkActive="active">Users</a>
</nav>
<router-outlet />
{ path: 'dashboard',
loadComponent: () => import('./dashboard/dashboard.component').then(m => m.DashboardComponent),
children: [
{ path: 'stats', loadComponent: () => import('./dashboard/stats.component').then(m => m.StatsComponent) },
{ path: 'settings', loadComponent: () => import('./dashboard/settings.component').then(m => m.SettingsComponent) },
]
}