Encyclopédie des erreurs

Anti-pattern NgModule.id défini sur module.id

Utiliser module.id comme id de NgModule est un anti-pattern courant, qui n'a probablement aucune utilité dans votre code.

Les NgModules peuvent être déclarés avec un id :

@NgModule({
  id: 'my_module',
})
export class MyModule {}

Déclarer un id rend le NgModule disponible à la recherche via l'opération getNgModuleById(). Cette fonctionnalité est rarement utilisée, principalement dans des scénarios de bundling très spécifiques, lors du lazy loading de NgModules sans obtenir de référence directe vers eux. Dans la plupart du code Angular, il est préférable d'utiliser l'import() dynamique d'ES (import('./path/to/module')), car il fournit une référence directe au NgModule chargé sans nécessiter d'enregistrement global, qui est un effet de bord.

Si vous n'utilisez pas getNgModuleById, vous n'avez pas besoin de fournir d'id à vos NgModules. En fournir un présente un inconvénient important : le NgModule ne peut plus être éliminé par le tree-shaking, ce qui peut avoir un impact sur la taille de votre bundle.

En particulier, le motif id: module.id découle d'une mauvaise compréhension de @NgModule.id. Dans les versions précédentes d'Angular, il était parfois nécessaire d'inclure la propriété moduleId: module.id dans les métadonnées de @Component.

Déboguer l'erreur

Vous pouvez supprimer la déclaration id: module.id de vos NgModules. Le compilateur ignore cette déclaration et émet cet avertissement à la place.