Angular est-il vraiment plus compliqué que React ?

Quand on débute avec Angular, il est facile de se sentir découragé face à la multitude de concepts à assimiler. Cette complexité peut inciter à se tourner vers des frameworks comme React, qui semblent plus simples à première vue. Mais est-ce vraiment le cas ?

Abonnez-vous à notre chaîne

Pour profiter des prochaines vidéos sur Angular, abonnez-vous à la nouvelle chaîne YouTube !

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

Chaque mois, recevez en avant-première notre newsletter avec les dernières actualités, tutoriels, astuces et ressources Angular directement par email !