web-dev-qa-db-fra.com

Angular 6 Création du service Singleton

Je crois comprendre que certains changements ont eu lieu dans Angular 6 avec la manière dont les services singleton doivent être créés. J'ai un service d'authentification qui doit être construit une fois pour chaque composant qui y accède. J'ai mis le fournisseur à root pour le service: 

@Injectable({
  providedIn: 'root'
})

Et dans mon fichier app.module.ts, j'ai défini AuthService comme l'un de mes fournisseurs dans NgModule. Cependant, chaque fois que je route entre différents composants qui utilisent le service Auth, une nouvelle instance du service Auth est créée (suppression des données depuis le premier appel). Comment puis-je m'assurer que le service d'authentification n'est instancié qu'une seule fois, puis accéder à cette instance entre différents composants?

3
Dan

C'est le comportement par défaut de l'ajout de providedIn au niveau de service. Selon Docs

fourni ici indique à Angular que l'injecteur de racine est responsable pour créer une instance de HeroService. Services qui sont à condition que cette méthode soit automatiquement mise à la disposition de l'ensemble application et ne doivent pas être énumérés dans aucun module.

dans votre cas, supprimez simplement le providedIn: 'root' et n’avez que des sous-fournitures dans le module.ts. Reportez-vous à la réponse suivante.

4
Sajeetharan