📧 Reste informé(e) !

Reçois les derniers articles et conseils EasyAngularKit directement dans ta boîte mail.

S'inscrire gratuitement

~2 min de lecture

Angular : Quelle différence entre Constructor et OnInit ?

En Angular, on a souvent le choix entre faire une initialisation dans le constructor() ou dans le ngOnInit().
Et si tu choisis toujours l’un des deux "par défaut", il est temps de remettre ça à plat.


🚧 Le constructor() : pour préparer l’objet

Le constructeur est une fonction native TypeScript/JavaScript.
Il sert à initialiser l’objet : injecter des dépendances, déclarer des propriétés, ou effectuer une logique très simple de setup.

class App {
  constructor(private userGateway: UserGateway) {
    this.title = 'Bienvenue !';
  }
}

⚠️ Bien que l'injection de dépendance soit possible via le constructeur, le nouveau style guide sorti avec la v20 recommande d'utiliser inject().

À faire dans le constructor :

  • Injection de services, possible, mais préférer inject()
  • Assignation simple de valeurs synchrones
  • Initialisation de propriétés "statiques" ou de constantes
  • utilisation de effect(), afterNextRender(), afterRender(), afterEveryRender()

À éviter dans le constructor :

  • Accès au DOM
  • Appels réseau (même via un service)
  • Logique métier nécessitant des données asynchrones

🔄 Le ngOnInit() : pour agir une fois le composant prêt

ngOnInit() est un hook de cycle de vie Angular, appelé après l’instanciation et après que les inputs du composant sont définis.

C’est là qu’on place :

  • la logique qui dépend des inputs
  • les appels à des services asynchrones
  • les initialisations complexes
class App implements OnInit {
  @Input({ required: true }) idUser!: string;

  ngOnInit(): void {
    this.userGateway.getUser(this.idUSer).subscribe(user => this.user = user);
  }
}

À faire dans le ngOnInit :

  • Appels asynchrones (HTTP, stockage, etc.)
  • Initialisation basée sur les @Input()

🧠 Alors… comment choisit-on ?

Pose-toi la question suivante :

Ai-je besoin d’un de mes inputs ?

  • 👉 Si non, le constructor() suffit.
  • 👉 Si oui, c’est dans le ngOnInit() que ça se passe.

🎬 En résumé

Besoin Constructor ngOnInit
Injection de dépendances
Accès aux @Input()
Logique métier basée sur les données
Code synchrone simple
Appels réseau / Observables

Et avec les Signals

Là la logique est différentes.

Souvent, on passe par des linkedSignal, computed ou effect. De fait, on a pas besoin de OnInit.

L'API Resource qui est actuellement en train de s'installer va également retirer du code des hooks de cycle de vie.

Il n'y a pas une bonne recette pour toutes les situations. Il faut choisir celle qui correspond le mieux à notre cas d'usage.


🚀 Envie d’aller plus loin avec Angular ?
📚 Découvre les modules de formation Angular sur EasyAngularKit pour progresser à ton rythme avec des cas concrets.
Apprends Angular pas à pas, avec de vrais projets, sans installation, ni configuration.

📧 Reste informé(e) !

Reçois les derniers articles et conseils EasyAngularKit directement dans ta boîte mail.

S'inscrire gratuitement

`outputFromObservable` et `outputToObservable` : les 2 ponts que ta migration `EventEmitter` → `output()` ignore

20 juillet 2026

Tu passes tes `@Output() EventEmitter` en `output()` et d'un coup ton `.pipe(debounceTime())` ne compile plus, ton service RxJS ne se branche plus, et tes tests hurlent. Les deux fonctions d'interop existent depuis Angular 17.3 (stables depuis la 19) mais 90% des migrations les ratent. Tour des 5 pièges qui cassent ton flux RxJS quand tu passes aux outputs signals, avec les patterns pour reprendre la main.

Angular Signals RxJS Composants Migration Bonnes pratiques

ng-content : 6 patterns de projection Angular qui séparent le composant réutilisable du jetable

6 juillet 2026

Tu poses un <ng-content> dans ton composant Card et tu penses que c'est réutilisable. Sauf que le slot vide casse ton layout, l'ordre de tes select te joue des tours, un <ng-container> disparait dans un slot à sélecteur de tag, et détecter un slot vide te force à toucher au DOM. 6 patterns concrets, tous vérifiés en test, avec du signal-based contentChild pour boucler proprement en Angular 20+.

Angular Content Projection ng-content Composants Signals

AngularKit

Suite d'outils pour développeurs Angular francophones. Apprends, modernise tes réflexes, audite ta codebase.

Produits

Contact

Légal

© 2026 AngularKit. Tous droits réservés.