RouterModule.forRoot(routes) | <BrowserRouter> + <Routes> tree |
{ path: 'employees', component: EmployeeListComponent } | <Route path="employees" element={<EmployeeList />} /> |
{ path: 'employees/edit/:id', component: EmployeeFormComponent } | <Route path="employees/edit/:id" element={<EmployeeForm />} /> |
{ path: '', redirectTo: '/employees', pathMatch: 'full' } | <Route index element={<Navigate to="/employees" replace />} /> |
{ path: '**', component: NotFoundComponent } | <Route path="*" element={<NotFound />} /> |
ActivatedRoute.params | const { id } = useParams<{ id: string }>() |
ActivatedRoute.queryParams | const [searchParams] = useSearchParams() |
Router.navigate(['/employees', id]) | const navigate = useNavigate(); navigate(/employees/${id}) |
[routerLink]="['/employees', id]" | <Link to={/employees/${id}}> |
[routerLinkActive]="'active'" | <NavLink className={({ isActive }) => isActive ? 'active' : ''}> |
CanActivate guard | Wrapper component checking auth, redirect via <Navigate> |
Resolver | Route loader (React Router 6.4+ data APIs) or fetch-on-mount |
Lazy-loaded modules (loadChildren) | React.lazy(() => import('...')) + <Suspense> |