Angular Stream
En direct le 31 mars à 18h30

Apprendre Angular en 1h

Je me donne un objectif: vous faire découvrir et apprendre Angular en 1 heure: composant, syntaxe dans les templates, les directives, les signaux, les routeurs, les services, l'injection de dépendances, les observables et les requêtes HTTP. Le nécessaire pour faire une application Angular !.

Skip to content

Vous souhaitez recevoir de l'aide sur ce sujet ? rejoignez la communauté Angular.fr sur Discord.

NG8001 - Invalid Element

Réponse courte

Vous essayez d'utiliser un composant qui n'a pas été correctement déclaré ou importé dans votre application. Autrement dit, vous avez oublié d'importer le composant dans le tableau imports du composant. Nous parlons des composants, mais ça peut arriver avec les modules, les pipes, les directives, etc.

L'erreur NG8001 est l'une des erreurs les plus courantes que vous pouvez rencontrer lors du développement avec Angular. Elle se produit lorsque vous essayez d'utiliser un composant qui n'a pas été correctement déclaré ou importé dans votre application.

Pour mieux comprendre, prenons un exemple de la vie quotidienne : imaginez que vous organisez une fête chez vous. Si quelqu'un essaie d'entrer sans être sur la liste des invités, le videur ne le laissera pas passer. C'est exactement ce qui se passe avec Angular : si vous essayez d'utiliser un composant qui n'a pas été "invité" (importé), Angular ne le reconnaîtra pas.

Comment se manifeste l'erreur ?

Voici un exemple typique qui provoque cette erreur :

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

@Component({
  standalone: true,
  selector: 'app-root',
  template: `
    <p>Voir la console</p>
    <app-users />
  `,
})
export class AppComponent {
}
ts
import { Component } from '@angular/core';

@Component({
  standalone: true,
  selector: 'app-users',
  template: `
    <div>Liste des utilisateurs</div>
  `
})
export class UsersComponent {
}

Cette configuration générera l'erreur :

NG8001: 'app-users' is not a known element

Comment résoudre l'erreur ?

Pour corriger cette erreur, vous devez importer le composant dans le tableau imports du composant parent :

ts
import { UsersComponent } from './users.component';
import { Component } from '@angular/core';

@Component({
  standalone: true,
  imports: [UsersComponent], // Ajout de l'import ici
  selector: 'app-root',
  template: `
    <p>Voir la console</p>
    <app-users />
  `,
})
export class AppComponent {
}

ASTUCE

Si vous utilisez plusieurs composants, n'oubliez pas de tous les ajouter dans le tableau imports :

ts
imports: [UsersComponent, OtherComponent, AnotherComponent]

Cas particulier : Web Components

Si vous utilisez des Web Components personnalisés, vous devrez ajouter le schéma CUSTOM_ELEMENTS_SCHEMA :

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

@Component({
  standalone: true,
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
  // ... reste de la configuration
})
export class AppComponent {
}

Plus d'informations sur les Web Components : Web Components