Feature Module

Les composants (ainsi que les directives, pipes, etc...) sont regroupés dans des modules par fonctionnalité. Ces modules sont alors appelés "feature module".

Il existe 5 familles de "feature modules" :

Domain Feature Module

Ce module met à dispositions des modules qui l'importent un composant de type container qui représente une fonctionnalité entière. Exemple :

@NgModule({
declarations: [
BookSearchComponent,
BookSearchFormComponent
],
exports: [
BookSearchComponent
],
imports: [
BookModule
]
})
export class BookSearchModule {
}

Service Feature Module

Un module qui ne met à disposition que des services (e.g. : HttpClientModule). Cf. Portée des Services.

Widget Feature Module

Un module ne contenant quasiment que des composants (généralement de type "presentational component") (e.g. MaterialButtonModule).

A moins de produire une librairie utilisée par plusieurs équipes (librairie open-source), il est préférable d'exporter tous les composants pour éviter les mauvaises surprises d'export manquant lors de leur utilisation par les copains.

Routed Feature Module

Un module contenant des composants associés à des routes. Cf. Routing.

Les modules de ce type sont généralement Lazy Loaded.

Routing Feature Module

Un simple module généralement associé à une Routed Feature Module dont le but est simplement d'alléger la définition de ce dernier en prenant en charge la configuration du routing.