Angular 4+ ngOnDestroy () en service - détruit une observable
Dans angulaire de l'application, nous avons ngOnDestroy()
crochet du cycle de vie d'un composant /directive et nous utilisons ce crochet pour vous désabonner des observables.
Je veux effacer /destory observables qui sont créés dans un @injectable()
service.
J'ai vu quelques posts disant que ngOnDestroy()
peut être utilisé dans un service.
Mais, est-ce une bonne pratique et la seule façon de le faire et Quand doit-il être appelé ?
quelqu'un veuillez préciser.
source d'informationauteur mperle
Vous devez vous connecter pour publier un commentaire.
OnDestroy cycle de vie du crochet est disponible dans les fournisseurs.
Selon les docs:
Voici un exemple:
Avis que, dans le code ci-dessus
Service
est une instance qui appartient àFoo
composant, de sorte qu'il peut être détruit lors de laFoo
est détruit.Pour les fournisseurs qui appartiennent à la racine de l'injecteur ce qui va se passer sur l'application de détruire, c'est utile pour éviter les fuites de mémoire avec plusieurs bottes, c'est à dire dans les tests.
Lorsqu'un fournisseur de services de parent de l'injecteur est souscrit en composant enfant, il ne sera pas détruit le composant détruire, c'est de la composante de la responsabilité de vous désabonner en composant
ngOnDestroy
(comme une autre réponse explique).Créer une variable dans votre service
Pousser chacun de vos abonnez-vous à la matrice comme
Écrire un
dispose()
méthodeAppeler cette méthode à partir de votre composant au cours de l'ngOnDestroy
Juste pour clarifier - vous n'avez pas besoin de détruire
Observables
mais seulement les abonnements effectués.Il semble que d'autres ont fait remarquer que vous êtes maintenant en mesure d'utiliser
ngOnDestroy
avec les services. Lien: https://angular.io/api/core/OnDestroy