-1
votes

Remplacer ngondestroy

Y a-t-il une solution pour faire quelque chose comme terminer l'observable lorsque le ngondestroy est appelé? Je veux dire lorsque vous n'avez qu'une instance de composant, créant un nouveau composant enfant n'est pas une solution pour moi. J'ai essayé de remplacer Ngondestroy en modifiant la fonction dans le composant proto mais il semble que les fonctions angulaires collecter les fonctions Ngondestroy et ma méthode modifiée ne soit pas utilisée du tout.


0 commentaires

3 Réponses :


2
votes

i personnaly utilise ce morceau de code pratique https://github.com/netanelbasal/ngx-take-until-destroy J'ai fait des recherches et d'être honnête cette approche est la plus élégante que je pouvais trouver

De plus, vous n'avez pas à vous désabonner si vous vous assurez que l'observable complète par exemple par exemple en utilisant des opérateurs tels que prendre TUNUNTIL ETC

Si vous créez le composant de manière dynamique, vous pouvez toujours passer l'instance du composant au lieu de "Ceci" dans "CODE>" Opérateur


4 commentaires

Oui, ce forfait est exactement ce que j'essaie de réaliser, mais comme je le vois, il n'était pas testé avec Ivy et mon problème existe lorsque j'utilise du lierre


Oui. Je confirme que ce travail sans compilateur d'ivy en s'arrête lorsque Ivy est activé :( Donc toute solution pour travailler aussi avec Ivy?


Je n'en ai aucune idée pour être honnête. Il semble étrange que le moteur de rendu l'influence peut-être que cela pourrait être un bug de lierre?


Je ne le pense pas. Il semble que le noyau collecte tous les fonctions Ngondestroy au début et à tous changements après cela n'affectera pas, pas comme le vieux moteur que je pense appeler Ngondestroy



0
votes

Eh bien Ngondestroy est une interface pour que vous puissiez le remplacer tout le temps ... Vous voulez compléter dans le Ngondestroy une source qui n'est jamais terminée? Vous pouvez utiliser MAIS PULEMILE ET PASSER UN BOOLEAN

// variables section
flag = true;

// somewhere when you want to subscribe
source$
  .pipe(takeWhile(flag)).subscribe(()=>{});

ngDestroy(){
flag = false;
}


0 commentaires

0
votes

J'aime utiliser un sujet juste pour la destruction. Dans Ngondestroy I, je tire ensuite () et complète (); xxx pré>

La variable destrers $ pourrait être utilisée en dehors du composant pour voir si le composant a été détruit ou non. P>

someInstanceComponent.destroy$.subscribe(val => //do something);


0 commentaires