NgModules > Partage de modules

Références

L'actualité

Librairie

L'information

Partage de modules

La création de modules partagés vous permet d'organiser et de rationaliser votre code. Vous pouvez regrouper les directives, les pipes et les composants couramment utilisés dans un seul module, puis importer ce module chaque fois que vous en avez besoin dans d'autres parties de votre application.

Considérez le module suivant à partir d'une application imaginaire :

Notez les points suivants :
  • Il importe le CommonModule parce que le composant du module a besoin de directives communes.
  • Il déclare et exporte les classes utilitaires, directives et composants.
  • Il réexporte le CommonModule et FormsModule.
En réexportant CommonModule et FormsModule, tous les modules qui importent ce SharedModule ont accès aux directives telles que NgIf et NgFor à partir de CommonModule et peuvent se lier aux propriétés du composant avec [(ngModel)], une directive du FormsModule.

Même si les composants déclarés par SharedModule peuvent ne pas être liés à [(ngModel)] et que SharedModule n'a pas besoin d'importer FormsModule, SharedModule peut toujours exporter FormsModule sans le répertorier parmi ses importations. De cette manière, vous pouvez donner à d'autres modules un accès à FormsModule sans avoir à l'importer directement dans le décorateur @NgModule.

Utilisation de composants vs services d'autres modules.

Il existe une distinction importante entre utiliser un composant d'un autre module et utiliser un service d'un autre module. Importez des modules lorsque vous souhaitez utiliser des directives, des pipes et des composants. L'importation d'un module avec des services signifie que vous aurez une nouvelle instance de ce service, ce qui n'est généralement pas ce dont vous avez besoin (vous souhaitez généralement réutiliser un service existant). Utilisez les importations de modules pour contrôler l'instanciation de service.

Le moyen le plus courant d'obtenir des services partagés est l'injection de dépendance Angular, plutôt que via le système de modules (l'importation d'un module entraîne la création d'une nouvelle instance de service, ce qui n'est pas un usage typique).