NgModules > Composants d'entrée

Références

L'actualité

Librairie

L'information

Composants d'entrée

Un composant d'entrée est un composant que Angular charge impérativement (c'est-à-dire que vous ne le référencez pas dans le modèle), par type. Vous spécifiez un composant d'entrée en l'amorçant dans un NgModule ou en l'incluant dans une définition de routage.

Pour contraster les deux types de composants, certains modèles inclus dans le modèle sont déclaratifs. De plus, il y a des composants que vous chargez impérativement; c'est-à-dire des composants d'entrée.

Il existe deux principaux types de composants d'entrée :
  • Le composant racine amorcé.
  • Un composant que vous spécifiez dans une définition de route.

Un composant d'entrée "bootstrapped"

Voici un exemple de spécification d'un composant amorcé AppComponent, dans un fichier app.module.ts de base :

Un composant "bootstrapped" est un composant d'entrée chargé par Angular dans le DOM lors du processus d'amorçage (lancement de l'application). Les autres composants d'entrée sont chargés dynamiquement par d'autres moyens, comme avec le routeur.

Angular charge une racine dynamiquement AppComponent car elle est répertoriée par type dans @NgModule.bootstrap.

Un composant peut également être démarré impérativement dans la méthode du module ngDoBootstrap(). La propriété indique au compilateur qu'il s'agit d'un composant d'entrée et qu'elle doit générer du code pour amorcer l'application avec ce composant @NgModule.bootstrap

Un composant "bootstrapped" est nécessairement à un composant d'entrée car l'amorçage est un processus impératif, il doit donc disposer d'un composant d'entrée.

Un composant d'entrée routé

Le deuxième type de composant d'entrée apparaît dans une définition d'itinéraire comme celle-ci:

Une définition de route fait référence à un composant par son type avec le component : CustomerListComponent.

Tous les composants du routeur doivent être des composants d'entrée. Parce que cela nécessiterait que vous ajoutiez le composant à deux endroits (routeur et entryComponents), le compilateur est suffisamment intelligent pour reconnaître qu'il s'agit d'une définition de routeur et y ajouter automatiquement le composant de routeur entryComponents.

Le tableau entryComponents

Bien que le décorateur @NgModule ait un tableau entryComponents, la plupart du temps, vous n'avez pas à définir explicitement les composants d'entrée, car Angular ajoute automatiquement les composants répertoriés dans @NgModule.bootstrap et les définitions d'itinéraire aux composants d'entrée. Bien que ces deux mécanismes représentent la plupart des composants d'entrée, si votre application doit impérativement amorcer ou charger dynamiquement un composant par type, vous devez l'ajouter explicitement à entryComponents.

entryComponents et le compilateur

Pour les applications de production, vous souhaitez charger le plus petit code possible. Le code ne doit contenir que les classes dont vous avez réellement besoin et exclure les composants qui ne sont jamais utilisés. Pour cette raison, le compilateur angulaire ne génère du code que pour les composants accessibles depuis le entryComponents; Cela signifie que l'ajout de références supplémentaires @NgModule.declarations n'implique pas qu'elles seront nécessairement incluses dans le dernier paquet.

En fait, de nombreuses bibliothèques déclarent et exportent des composants que vous n'utiliserez jamais. Par exemple, une bibliothèque de conception de matériau exportera tous les composants car elle ne saura pas lesquels vous utiliserez. Cependant, il est peu probable que vous les utilisiez tous. Pour ceux dont vous ne faites pas référence, le "compilateur" d'arborescence supprime ces composants du package de code final.

Si un composant n'est pas un composant d'entrée et ne figure pas dans un modèle, le "compilateur" d'arborescence le jettera. Il est donc préférable d'ajouter uniquement les composants qui sont réellement des composants d'entrée pour que votre application soit aussi nette que possible.