Leçon 01 · Phase 0 — Socle Angular moderne · ~15 min

Le composant standalone

Le bloc de Lego dont est faite toute application Angular moderne. Apprends à le lire, et tu peux lire 80 % de leur ERP.

Pourquoi ça compte pour Alliance Leur ERP est un assemblage de composants Angular. En revue de code ou en pair, la toute première chose que tu liras, c'est un composant. Aujourd'hui : savoir le reconnaître, nommer chacune de ses parties, et repérer ce qui a changé depuis l'AngularJS que tu connaissais.

1. L'idée en une phrase

Un composant = un morceau d'écran réutilisable = une classe TypeScript décorée, qui associe trois choses : un bout de logique (la classe), un bout de HTML (le template), et un nom de balise (le selector) pour l'invoquer.

Analogie .NET / C# Un composant Angular, c'est comme une classe C# décorée par un attribut. En .NET tu écris [ApiController] au-dessus d'une classe pour dire au framework « traite-moi comme un contrôleur ». En Angular tu écris @Component({...}) au-dessus d'une classe pour dire « traite-moi comme un composant d'UI ». Le décorateur, c'est l'attribut. La classe reste une classe normale : champs, méthodes, constructeur.

2. Anatomie d'un composant

Voici un composant minimal qui afficherait un poste de mesure dans l'ERP. Lis-le, on le décortique juste après.

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

@Component({
  selector: 'app-poste-mesure',        // le nom de balise
  standalone: true,                     // autonome (cf. §3)
  template: `
    <h2>{{ nomPoste }}</h2>
    <p>Dernière mesure : {{ derniereValeur }} mm</p>
  `,
})
export class PosteMesureComponent {
  nomPoste = 'Poste A — soudure';       // un champ, comme en C#
  derniereValeur = 12.4;
}
PartieRôleÉquivalent mental
@Component(...)Décorateur : marque la classe comme composantAttribut C# [...]
selectorLe nom de balise pour l'utiliser : <app-poste-mesure>Nom d'une balise HTML maison
templateLe HTML affiché, avec des trous {{ }}Une vue Razor .cshtml
la classLa logique et les données du composantUn ViewModel / code-behind

Les doubles accolades {{ nomPoste }} s'appellent l'interpolation : Angular remplace le trou par la valeur du champ de la classe. C'est le pont entre la logique (la classe) et l'affichage (le template). On y reviendra en leçon 04.

3. « Standalone » : qu'est-ce qui a changé depuis ton AngularJS ?

Si tu as touché à AngularJS (ou à l'Angular de 2022), tu te souviens peut-être des NgModule : ces gros fichiers @NgModule({ declarations: [...], imports: [...] }) où il fallait déclarer chaque composant pour qu'il « existe ». C'était de la paperasse de câblage.

Angular moderne tue cette paperasse : un composant standalone se suffit à lui-même. Il déclare directement ce dont il a besoin (autres composants, directives) dans son propre tableau imports. Plus de module central obligatoire.

Analogie NgModule, c'était comme un .csproj où tu devais lister à la main chaque fichier du projet pour qu'il compile. Standalone, c'est le monde moderne où le fichier déclare lui-même ses using et le build le trouve tout seul. Chaque composant porte ses propres dépendances.
Avant (NgModule)Maintenant (standalone)
Composant déclaré dans un module tiersComposant autonome, se déclare lui-même
declarations + imports dans le moduleimports: [...] dans le composant
Beaucoup de fichiers de câblageUn composant = un fichier qui se suffit
Œil de tech lead Depuis Angular 19, standalone: true est la valeur par défaut — souvent tu ne verras même plus la ligne écrite. Mais sur un ERP qui existe depuis 2023, tu croiseras sûrement encore des NgModule legacy. Savoir lire les deux mondes, et reconnaître lequel tu as sous les yeux, c'est exactement ce qu'on attend d'un lead en reprise d'existant.

4. Vérifie ta compréhension

Que fait le décorateur @Component({...}) ?
Dans le composant, à quoi sert le selector: 'app-poste-mesure' ?
Qu'apporte un composant « standalone » par rapport à l'ancien monde ?
À retenir Un composant = une classe décorée par @Component qui relie une logique, un template HTML et un selector. Standalone = il se suffit à lui-même, sans NgModule. C'est l'unité de base : tout l'ERP en est fait.
Source primaire à lire (10 min)

Documentation officielle Angular — Anatomy of components. Lis la section « Defining a component » et regarde leurs exemples. C'est la référence que tu citeras en équipe.

Je suis ton prof — pose-moi des questions. Un truc pas clair ? Tu veux que je te montre à quoi ressemble un composant qui en appelle un autre, ou un vrai NgModule legacy pour comparer ? Demande-moi, ici, maintenant. C'est en creusant que ça rentre.
◀ — Suivant : 02 · TypeScript pour Angular ▶