Angular16 min read

Nested Routes and Layout Pages (Professional Routing)

Build dashboard layouts with child routes, shared sidebars, and clean navigation patterns.

Ethan Brooks
August 24, 2025
6.5k205

Most real applications have layout pages like:
- dashboard with sidebar
- admin area
- settings pages

You do not want to repeat the sidebar on every page. Nested routes solve this.

## Step 1: Create a layout component

```ts
import { Component } from '@angular/core';
import { RouterOutlet, RouterLink } from '@angular/router';

@Component({
  selector: 'app-dashboard-layout',
  standalone: true,
  imports: [RouterOutlet, RouterLink],
  template: `
    <div class="layout">
      <aside>
        <a routerLink="/dashboard">Home</a>
        <a routerLink="/dashboard/settings">Settings</a>
      </aside>

      <main>
        <router-outlet></router-outlet>
      </main>
    </div>
  `,
})
export class DashboardLayoutComponent {}
```

## Step 2: Add child routes

```ts
export const routes = [
  {
    path: 'dashboard',
    component: DashboardLayoutComponent,
    children: [
      { path: '', loadComponent: () => import('./dash-home.component').then(m => m.DashHomeComponent) },
      { path: 'settings', loadComponent: () => import('./dash-settings.component').then(m => m.DashSettingsComponent) },
    ],
  },
];
```

## How it renders

```mermaid
flowchart TD
  A[/dashboard URL] --> B[DashboardLayoutComponent]
  B --> C[router-outlet inside layout]
  C --> D[DashHomeComponent]
```

> Next: Route resolvers to load data before page opens.
#Angular#Routing#Intermediate