Aller au contenu

Standalone Components

Les standalones components sont arrivés avec la version 14 d’Angular. Ils rendent l’utilisation des @NgModule optionel grâce à l’attribut standalone que l’on peut ajouter à un composant.

Créer un Standalone Component

@Component({
  selector: 'app-header',
  standalone: true,
  template: `...`
})
export class HeaderComponent {}

En ajoutant l’attribut standalone: true à mon composant, je le rends autonome, ainsi je n’ai plus besoin de le déclarer dans un @NgModule, je peux l’utiliser directement dans un autre composant si celui-ci est également standalone en l’important dans l’attribut imports.

Utiliser un Standalone Component

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [HeaderComponent],
  template: `
    <app-header />
    <main>...</main>
  `
})
export class AppComponent {}

Ici, j’importe mon HeaderComponent dans mon AppComponent et je peux l’utiliser comme n’importe quel autre composant.

Le routing avec les Standalone Components

Pour lier une URL à un composant standalone et le lazy loader, j’utilise loadComponent.

export const appRoutes: Route[] = [
  {
    path: 'dashboard,
    loadComponent: import('./routes/dashboard/dashboard.component.ts')
  }
]

Et pour les routes qui possèdent des sous-routes, j’utilise loadChildren et je pointe vers un tableau de routes.


export const appRoutes: Route[] = [
  {
    path: 'products',
    loadChildren: () => import('./routes/products/products.routes.ts')
  }
]