🚀 Angular 20 et Bootstrap : Le Guide Pratique pour les Faire Collaborer

00:00
BACK TO HOME

🚀 Angular 20 et Bootstrap : Le Guide Pratique pour les Faire Collaborer

10xTeam June 19, 2025 11 min read

Angular 20, arrivĂ© en mai 2025, change vĂ©ritablement la donne. Il est clair que l’équipe d’Angular met les bouchĂ©es doubles pour nous faciliter la vie en se concentrant sur la vitesse, une rĂ©activitĂ© plus intelligente et une expĂ©rience de dĂ©veloppement plus propre. Mais que se passe-t-il lorsque vous ajoutez un vieil ami comme Bootstrap dans l’équation ? Vous obtenez le meilleur des deux mondes : un framework de design responsive solide comme le roc, fonctionnant sur un moteur frontend moderne et suralimentĂ©.

Ce guide est lĂ  pour vous accompagner pas Ă  pas dans l’intĂ©gration de Bootstrap avec Angular 20, en portant une attention particuliĂšre aux nouvelles fonctionnalitĂ©s qui modifient notre façon de construire les choses.

Alors, quoi de neuf avec Angular 20 ?

Avant de plonger dans l’installation, passons rapidement en revue les fonctionnalitĂ©s phares d’Angular 20, car elles influencent directement la maniĂšre dont nous allons gĂ©rer l’interface utilisateur.

Les Signaux sont au premier plan

L’API des Signaux (Signals) est dĂ©sormais stable, et c’est un pas de gĂ©ant. Pensez-y comme une maniĂšre plus directe de dire Ă  votre application exactement ce qui doit ĂȘtre mis Ă  jour, sans les grands coups de pinceau de Zone.js. Pour nous, cela signifie des interactions plus fluides et plus rapides avec les composants Bootstrap.

La vie sans Zone.js (Zoneless)

Le changement le plus important est peut-ĂȘtre le passage Ă  des applications “zoneless” (sans Zone.js). Abandonner Zone.js peut sembler intimidant, mais les avantages sont Ă©normes :

  • Des applications plus lĂ©gĂšres : La taille de vos bundles vous remerciera.
  • Une vitesse fulgurante : La dĂ©tection des changements bĂ©nĂ©ficie d’un sĂ©rieux coup de fouet en termes de performances.
  • Un dĂ©bogage simplifiĂ© : Les traces d’appels (stack traces) sont plus claires et plus faciles Ă  suivre.

Lorsque l’on travaille avec Bootstrap, cela signifie simplement que nous devons ĂȘtre un peu plus explicites sur le moment oĂč les mises Ă  jour de l’interface utilisateur doivent se produire, en particulier avec les composants interactifs.

Des templates plus intelligents

Angular 20 donne Ă  nos templates de nouveaux super-pouvoirs, comme l’utilisation d’opĂ©rateurs d’exponentiation (**) ou de l’opĂ©rateur in directement dans le HTML. C’est excellent pour crĂ©er des classes Bootstrap dynamiques Ă  la volĂ©e sans surcharger la logique de nos composants.

Faire en sorte qu’Angular 20 et Bootstrap s’entendent bien

Allez, mettons les mains dans le cambouis. Voici quelques façons de configurer Bootstrap dans votre projet Angular 20.

MĂ©thode 1 : L’installation classique via NPM

C’est la voie la plus directe. Ouvrez simplement votre terminal et lancez :

npm install bootstrap

Ensuite, vous devrez indiquer Ă  Angular oĂč trouver les fichiers. Rendez-vous dans votre fichier angular.json et mettez Ă  jour le tableau styles :

"styles": [
  "node_modules/bootstrap/dist/css/bootstrap.min.css",
  "src/styles.css"
],

Besoin des fonctionnalitĂ©s JavaScript de Bootstrap pour les menus dĂ©roulants ou les modales ? Ajoutez le bundle JS au tableau scripts dans le mĂȘme fichier :

"scripts": [
  "node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"
]

Cette mĂ©thode est propre, simple et fonctionne trĂšs bien avec l’architecture “zoneless” d’Angular 20, car elle Ă©vite les conflits potentiels avec des bibliothĂšques comme jQuery.

MĂ©thode 2 : L’approche native Angular avec ng-bootstrap

Si vous voulez des composants qui semblent vraiment intégrés à Angular, ng-bootstrap est votre meilleur allié. Il réinvente les composants Bootstrap sous forme de directives purement Angular.

ng add @ng-bootstrap/ng-bootstrap

Attention ! Juste aprĂšs la sortie d’Angular 20, il y a eu un petit couac. Angular a renommĂ© une fonction de afterRender en afterEveryRender, ce qui a causĂ© des problĂšmes de compatibilitĂ© avec ng-bootstrap. Si vous rencontrez ce problĂšme, vous avez deux options :

  1. VĂ©rifiez si l’équipe officielle de ng-bootstrap a publiĂ© un correctif pour Angular 20.
  2. Si vous vous sentez d’humeur aventureuse, cherchez un correctif fourni par la communautĂ©, comme celui discutĂ© dans le ticket GitHub #4828.

Utiliser ng-bootstrap est fantastique dans un environnement “zoneless” car il est conçu pour se synchroniser avec le systĂšme de dĂ©tection de changements d’Angular, et non pour le combattre.

MĂ©thode 3 : L’autre option native, ngx-bootstrap

ngx-bootstrap est un autre excellent choix qui fournit des implémentations natives Angular des composants Bootstrap.

npm install ngx-bootstrap bootstrap

Vous pouvez ensuite importer uniquement les modules dont vous avez besoin. Dans une configuration traditionnelle basée sur les modules, cela ressemble à ceci :

import { TooltipModule } from 'ngx-bootstrap/tooltip';

@NgModule({
  imports: [TooltipModule.forRoot(), ...],
})
export class AppModule { }

Ou, si vous adoptez l’avenir avec les composants autonomes (standalone) :

import { TooltipModule } from 'ngx-bootstrap/tooltip';

@Component({
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  standalone: true,
  imports: [TooltipModule]
})
export class MyComponent { }

Bootstrap dans le monde des composants autonomes

Angular 20 continue de promouvoir les composants autonomes comme la voie à suivre, nous permettant de construire des applications avec moins de code répétitif (boilerplate).

Utiliser les styles Bootstrap

MĂȘme dans un monde “standalone”, vous ajouterez toujours le fichier CSS principal de Bootstrap dans angular.json. La magie opĂšre Ă  l’intĂ©rieur de votre composant, oĂč vous pouvez importer directement des bibliothĂšques de composants spĂ©cifiques.

import { NgbAlertModule, NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  standalone: true,
  imports: [NgbAlertModule, NgbAccordionModule] // Importez juste ce dont vous avez besoin
})
export class AppComponent { }

Démarrer une application autonome

Lorsque vous démarrez une application autonome, la configuration dans main.ts est épurée et propre :

// main.ts
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app/app.component';

bootstrapApplication(AppComponent, {
  providers: [
    // Ajoutez ici les providers dont vos composants Bootstrap pourraient avoir besoin
  ]
}).catch(err => console.error(err));

Cela correspond parfaitement Ă  la philosophie d’Angular 20 de construire des applications modulaires et ciblĂ©es.

Travailler sans Zone.js signifie que nous avons plus de contrĂŽle, mais aussi un peu plus de responsabilitĂ©s, surtout avec les Ă©vĂ©nements de l’interface utilisateur.

Déclencher manuellement les changements

Parfois, un Ă©vĂ©nement d’un composant Bootstrap (comme la fermeture d’une modale) peut se produire sans qu’Angular en soit conscient. Dans une application “zoneless”, vous devrez peut-ĂȘtre donner un petit coup de pouce Ă  Angular.

import { ChangeDetectorRef } from '@angular/core';

export class MyComponent {
  constructor(private cdr: ChangeDetectorRef) {}
  
  onBootstrapEvent() {
    // Faites ce que vous avez Ă  faire...
    this.cdr.detectChanges(); // "Hey Angular, regarde par ici !"
  }
}

Laisser les Signaux faire le gros du travail

Une solution plus Ă©lĂ©gante consiste Ă  utiliser les Signaux d’Angular 20 pour gĂ©rer l’état de vos composants Bootstrap.

import { Component, signal } from '@angular/core';

@Component({
  selector: 'app-modal-example',
  template: `
    <button (click)="toggleModal()">Ouvrir/Fermer la modale</button>
    `
})
export class ModalExampleComponent {
  isModalOpen = signal(false);
  
  toggleModal() {
    this.isModalOpen.update(value => !value);
  }
}

Cette approche puise directement dans le nouveau cƓur rĂ©actif d’Angular 20, rendant vos mises Ă  jour d’interface utilisateur incroyablement efficaces.

Boostez votre application avec le Rendu CÎté Serveur (SSR)

Le SSR d’Angular 20 a reçu des amĂ©liorations fantastiques qui changent la façon dont nous gĂ©rons Bootstrap dans les applications rendues cĂŽtĂ© serveur.

Profiter de l’hydratation incrĂ©mentielle

L’hydratation incrĂ©mentielle permet Ă  votre page rendue par le serveur de “s’éveiller” morceau par morceau au fur et Ă  mesure que l’utilisateur interagit avec elle. C’est un gain de performance Ă©norme pour les pages contenant de nombreux composants Bootstrap. La configuration dans votre server.ts pour une application autonome ressemblerait Ă  quelque chose comme ça :

const _app = () => bootstrapApplication(AppComponent, {
  providers: [
    importProvidersFrom(ServerModule),
    // ... autres providers
  ],
});

server.engine('html', ngExpressEngine({
  bootstrap: _app
}));

Cela garantit que vos styles Bootstrap sont correctement rendus sur le serveur tout en offrant aux utilisateurs une expérience rapide et interactive cÎté client.

Personnalisez Bootstrap Ă  votre image

Soyons honnĂȘtes, vous ne voulez pas que votre application ressemble Ă  tous les autres sites Bootstrap sur le web. La personnalisation avec Sass est la solution.

Concocter un thÚme personnalisé

Créez un fichier _variables.scss pour mettre votre propre touche sur les valeurs par défaut de Bootstrap.

// src/_variables.scss
$primary: #3f51b5; // Un joli indigo de Material Design
$font-family-base: 'Roboto', sans-serif;
$enable-responsive-font-sizes: true;

Ensuite, importez vos surcharges avant le fichier Sass principal de Bootstrap dans styles.scss :

// styles.scss
@import './variables';
@import 'bootstrap/scss/bootstrap';

Vous disposez maintenant d’un systĂšme de design unique qui bĂ©nĂ©ficie toujours de la grille responsive de Bootstrap et de la puissance brute d’Angular 20.

Nos conseils de pro pour une expérience sans accroc

En se basant sur les nouveautĂ©s d’Angular 20, voici nos conseils pour un partenariat rĂ©ussi avec Bootstrap :

  1. Optez pour le natif : Dans un monde “zoneless”, privilĂ©giez les bibliothĂšques natives Angular comme ng-bootstrap ou ngx-bootstrap. Elles sont conçues pour fonctionner avec la dĂ©tection de changements d’Angular, pas contre elle.
  2. Adoptez les Signaux : Utilisez l’API des Signaux pour gĂ©rer l’état de vos composants d’interface utilisateur. C’est la maniĂšre moderne et performante de gĂ©rer la rĂ©activitĂ© dans Angular.
  3. Optimisez pour le SSR : Tirez parti des amĂ©liorations du SSR d’Angular 20. Assurez-vous que votre intĂ©gration Bootstrap est compatible avec des fonctionnalitĂ©s comme l’hydratation incrĂ©mentielle.
  4. Restez lĂ©ger : Angular 20 est synonyme de performance. Si vous n’avez pas besoin des fonctionnalitĂ©s JavaScript de Bootstrap, envisagez d’utiliser uniquement la version CSS pour garder votre application lĂ©gĂšre.

Pour conclure

Associer Bootstrap Ă  Angular 20 est un choix fantastique. Vous bĂ©nĂ©ficiez d’un framework de design puissant et familier et d’un moteur frontend de pointe. En adoptant les grands changements d’Angular 20 — les Signaux, l’architecture “zoneless” et les templates plus intelligents — vous pouvez crĂ©er des applications qui sont non seulement belles et responsives, mais aussi plus rapides et plus faciles Ă  maintenir.

Que vous choisissiez une installation directe ou une bibliothĂšque native, l’astuce consiste Ă  aligner votre approche sur la nouvelle architecture d’Angular 20. Suivez les conseils de ce guide, et vous serez sur la bonne voie pour crĂ©er des applications web Ă©tonnantes qui tirent le meilleur des deux mondes.


Join the 10xdev Community

Subscribe and get 8+ free PDFs that contain detailed roadmaps with recommended learning periods for each programming language or field, along with links to free resources such as books, YouTube tutorials, and courses with certificates.

Audio Interrupted

We lost the audio stream. Retry with shorter sentences?