Services & Providers
Déclaration d'un Service
Pour déclarer un service Angular, il suffit de créer une classe TypeScript et de la décorer avec le décorateur @Injectable()
.
N'oubliez pas les parenthèses du décorateur @Injectable()
.
Pensez à utiliser un template ou live template dans votre IDE ou encore Angular CLI :
yarn ng generate module book-repository
Evitez de suffixer tous vos services et leurs fichiers respectivement avec les suffixes Service
et .service.ts
. tant qu'il n'y a pas de conflit ou d'ambiguïté.
En suffixant toutes les classes et instances par Service
, on finit par perdre en lisibilité.
Une classe (de type "helper" par exemple) peut devenir un "service" ou cesser d'être un "service" du jour au lendemain, la frontière est fine.
La bonne pratique est de toujours ajouter le décorateur @Injectable()
bien que celui-ci ne soit actuellement pas obligatoire tant que le service n'a pas de dépendances.
En essayant de l'injecter,
... vous remarquerez l'erreur suivante :
Angular essaie donc d'injecter une instance de BookRepository
mais ne sait pas la produire.
Définition d'un Provider
Afin de pouvoir instancier un service, Angular a besoin d'un "provider" lui indiquant comment produire l'instance de ce service.
useClass
useClass
La façon la plus commune de définir un provider est la suivante :
Cette approche étant la plus commune, il est alors recommandé d'utiliser la syntaxe raccourcie suivante :
useValue
useValue
Utilisation d'une valeur "hardcoded".
Il est préférable d'éviter cette utilisation.
Dans le cas d'une classe, cela voudrait dire que l'objet est instancié avant le démarrage de l'application et pourrait ne jamais être utilisé.
useFactory
useFactory
Comme son nom l'indique, cette propriété permet de définir l'instanciation du service via une fonction.
Dernière mise à jour