


Explication détaillée du moment où annuler l'abonnement dans Angular
Vous savez peut-être que lorsque vous vous abonnez à un objet observable ou configurez un écouteur d'événements, à un moment donné, vous devez effectuer une opération de désabonnement pour libérer la mémoire du système d'exploitation. Sinon, votre application pourrait souffrir de fuites de mémoire.
Examinons ensuite quelques scénarios courants dans lesquels les opérations de désabonnement doivent être effectuées manuellement dans le hook de cycle de vie ngOnDestroy. Cet article présente principalement une brève discussion sur le moment où annuler un abonnement dans Angular. L'éditeur pense que c'est plutôt bien. Maintenant, je vais le partager avec vous et vous donner une référence. Suivons l'éditeur et jetons un œil. J'espère que cela pourra aider tout le monde.
Scénario de ressources de publication manuelle
Formulaire
export class TestComponent { ngOnInit() { this.form = new FormGroup({...}); // 监听表单值的变化 this.valueChanges = this.form.valueChanges.subscribe(console.log); // 监听表单状态的变化 this.statusChanges = this.form.statusChanges.subscribe(console.log); } ngOnDestroy() { this.valueChanges.unsubscribe(); this.statusChanges.unsubscribe(); } }
La solution ci-dessus est également applicable à d'autres contrôles de formulaire.
Itinéraire
export class TestComponent { constructor(private route: ActivatedRoute, private router: Router) { } ngOnInit() { this.route.params.subscribe(console.log); this.route.queryParams.subscribe(console.log); this.route.fragment.subscribe(console.log); this.route.data.subscribe(console.log); this.route.url.subscribe(console.log); this.router.events.subscribe(console.log); } ngOnDestroy() { // 手动执行取消订阅的操作 } }
Service de rendu
export class TestComponent { constructor( private renderer: Renderer2, private element : ElementRef) { } ngOnInit() { this.click = this.renderer .listen(this.element.nativeElement, "click", handler); } ngOnDestroy() { this.click.unsubscribe(); } }
Observables infinis
Lorsque vous utilisez l'opérateur interval() ou fromEvent(), vous créez un objet observable infini. Dans ce cas, lorsque nous n’avons plus besoin de les utiliser, nous devons nous désabonner et libérer les ressources manuellement.
export class TestComponent { constructor(private element : ElementRef) { } interval: Subscription; click: Subscription; ngOnInit() { this.interval = Observable.interval(1000).subscribe(console.log); this.click = Observable.fromEvent(this.element.nativeElement, 'click') .subscribe(console.log); } ngOnDestroy() { this.interval.unsubscribe(); this.click.unsubscribe(); } }
Boutique Redux
export class TestComponent { constructor(private store: Store) { } todos: Subscription; ngOnInit() { /** * select(key : string) { * return this.map(state => state[key]).distinctUntilChanged(); * } */ this.todos = this.store.select('todos').subscribe(console.log); } ngOnDestroy() { this.todos.unsubscribe(); } }
Pas besoin de libérer manuellement les scénarios de ressources
AsyncPipe
@Component({ selector: 'test', template: `<todos [todos]="todos$ | async"></todos>` }) export class TestComponent { constructor(private store: Store) { } ngOnInit() { this.todos$ = this.store.select('todos'); } }
Lorsque le composant est détruit, le pipeline asynchrone effectuera automatiquement l'opération de désabonnement, évitant ainsi les risques de fuites de mémoire.
Extrait de code source angulaire d'AsyncPipe
@Pipe({name: 'async', pure: false}) export class AsyncPipe implements OnDestroy, PipeTransform { // ... constructor(private _ref: ChangeDetectorRef) {} ngOnDestroy(): void { if (this._subscription) { this._dispose(); } } }
@HostListener
export class TestDirective { @HostListener('click') onClick() { .... } }
Il est à noter que si vous utilisez le décorateur @HostListener, nous ne pouvons pas vous désinscrire manuellement lors de l'ajout d'écouteurs d'événements. Si vous devez supprimer manuellement la surveillance des événements, vous pouvez utiliser la méthode suivante :
// subscribe this.handler = this.renderer.listen('document', "click", event =>{...}); // unsubscribe this.handler();
Finite Observable
Lorsque vous utilisez des services HTTP ou des objets observables timer, vous n'avez pas besoin de vous désinscrire manuellement.
export class TestComponent { constructor(private http: Http) { } ngOnInit() { // 表示1s后发出值,然后就结束了 Observable.timer(1000).subscribe(console.log); this.http.get('http://api.com').subscribe(console.log); } }
opérateur de minuterie
Signature de l'opérateur
Copier le code Le code est le suivant :
minuterie statique publique (initialDelay : numéro | Date, période : numéro, planificateur : Planificateur) : Observable
Fonction opérateur
timer renvoie un observable qui émet une séquence infinie d'auto-augmentation avec un certain intervalle de temps. Cet intervalle est choisi par. toi. .
Exemples d'opérateurs
// 每隔1秒发出自增的数字,3秒后开始发送 var numbers = Rx.Observable.timer(3000, 1000); numbers.subscribe(x => console.log(x)); // 5秒后发出一个数字 var numbers = Rx.Observable.timer(5000); numbers.subscribe(x => console.log(x));
Conseil final
Vous devrait appeler la méthode unsubscribe() le moins possible. Vous pouvez en savoir plus sur le sujet dans l'article RxJS : Ne pas vous désabonner.
Des exemples spécifiques sont les suivants :
export class TestComponent { constructor(private store: Store) { } private componetDestroyed: Subject = new Subject(); todos: Subscription; posts: Subscription; ngOnInit() { this.todos = this.store.select('todos') .takeUntil(this.componetDestroyed).subscribe(console.log); this.posts = this.store.select('posts') .takeUntil(this.componetDestroyed).subscribe(console.log); } ngOnDestroy() { this.componetDestroyed.next(); this.componetDestroyed.unsubscribe(); } }
opérateur takeUntil
Signature de l'opérateur
public takeUntil(notifier: Observable): Observable<T>
Effet opérateur
Émet la valeur émise par la source Observable jusqu'à ce que le notifier Observable émet des valeurs.
Exemple d'opérateur
var interval = Rx.Observable.interval(1000); var clicks = Rx.Observable.fromEvent(document, 'click'); var result = interval.takeUntil(clicks); result.subscribe(x => console.log(x));
Recommandations associées :
Explication détaillée de la validation du formulaire dans AngularJS
Explication détaillée de l'utilisation des instructions personnalisées dans AngularJS_AngularJS
Explication détaillée du filtrage personnalisé dans AngularJS Device_AngularJS
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le chevauchement des fenêtres par défaut dans Win11 est très ennuyeux, donc de nombreux amis veulent annuler les fenêtres qui se chevauchent, mais ne savent pas comment l'annuler. En fait, nous n'avons besoin que d'utiliser un logiciel approprié. Comment annuler les fenêtres qui se chevauchent dans Win11 Méthode 1 : Annuler via la barre des tâches 1. Win11 n'a pas sa propre fonction d'annulation, nous devons donc télécharger un "startallback" 2. Une fois le téléchargement terminé, "décompressez" le package compressé. la décompression est terminée, ouvrez le dossier, exécutez le programme d'installation illustré pour terminer l'installation. . 3. Une fois l'installation terminée, vous devez ouvrir le « Panneau de configuration », puis modifier « Afficher par » dans le coin supérieur droit en « Grandes icônes ». 4. De cette façon, vous pouvez trouver "startallback", cliquez pour l'ouvrir et entrez les "Tâches" sur la gauche

Lorsqu'ils passent des commandes avec Meituan, les utilisateurs peuvent choisir d'annuler les commandes qu'ils ne souhaitent pas. De nombreux utilisateurs ne savent pas comment annuler les commandes Meituan. Les utilisateurs peuvent cliquer sur la page Mon pour saisir la commande à recevoir, sélectionner la commande qui doit être reçue. être annulé et cliquez sur Annuler. Comment annuler une commande avec Meituan 1. Tout d'abord, cliquez sur Meituan My Page pour saisir la commande à recevoir. 2. Cliquez ensuite pour saisir la commande qui doit être annulée. 3. Cliquez sur Annuler la commande. 4. Cliquez sur OK pour annuler la commande. 5. Enfin, sélectionnez le motif de l'annulation en fonction de votre situation personnelle et cliquez sur Soumettre.

Afin de protéger le contenu de l'écran ou d'économiser de l'énergie, nous activons souvent l'économiseur d'écran, mais trouvons très gênant de ressaisir le verrouillage par mot de passe à chaque fois après avoir quitté l'économiseur d'écran. Alors, comment annuler le verrouillage de l'écran Win11 ? , il peut être désactivé dans les paramètres de l'économiseur d'écran. Comment annuler le verrouillage de l'écran Win11 : 1. Tout d'abord, cliquez avec le bouton droit sur un espace vide du bureau et ouvrez "Personnalisation" 2. Ensuite, recherchez et ouvrez "l'interface de l'écran de verrouillage" à droite 3. Ensuite, ouvrez l'"Économiseur d'écran". " dans les paramètres concernés en bas 4. Enfin, cochez "Afficher l'écran de connexion lors de la restauration" et confirmez pour enregistrer pour annuler le verrouillage de l'écran.

1. Le symbole de l'oreille est le mode récepteur vocal. Tout d'abord, nous ouvrons WeChat. 2. Cliquez sur moi dans le coin inférieur droit. 3. Cliquez sur Paramètres. 4. Recherchez le chat et cliquez pour entrer. 5. Décochez Utiliser l'écouteur pour écouter la voix.

Lorsque de nombreux utilisateurs découvrent Mango TV, un logiciel vidéo, ils choisissent de devenir membres afin de profiter de davantage de ressources cinématographiques et télévisuelles et de services plus complets. Lors de l'utilisation des services d'abonnement Mango TV, certains utilisateurs choisiront d'activer la fonction de renouvellement automatique pour profiter des réductions afin de s'assurer qu'ils ne manqueront aucun contenu passionnant. Cependant, lorsque les utilisateurs n'ont plus besoin des services d'adhésion ou souhaitent changer de mode de paiement, l'annulation de la fonction de renouvellement automatique est une chose très importante pour protéger la sécurité des biens. Comment annuler le service de renouvellement automatique des utilisateurs de Mango TV qui souhaitent savoir ? Venez suivre cet article pour en savoir plus ! Comment annuler le renouvellement automatique de l'abonnement sur Mango TV ? 1. Entrez d'abord [Mon] dans l'application mobile Mango TV, puis sélectionnez [Adhésion VIP]. 2. Recherchez ensuite [Tube

Vous pouvez ouvrir la fonction de gestion du renouvellement automatique dans l'interface My Gold VIP Member pour annuler. Didacticiel Modèle applicable : Huawei P50 Système : HarmonyOS2.0 Version : Analyse iQiyi 12.1.0 1 Ouvrez l'application iQiyi sur votre téléphone, puis accédez à la page Ma. 2 Cliquez ensuite sur le membre VIP Gold en haut de ma page, puis cliquez sur l'option Gérer le renouvellement automatique. 3. Cliquez sur Annuler le renouvellement automatique dans la fenêtre contextuelle. Si vous n'êtes pas intéressé, continuez à annuler. 4Enfin, confirmez pour désactiver le renouvellement automatique et cliquez sur Je comprends, il suffit de le rejeter cruellement. Supplément : Comment annuler la fonction de renouvellement automatique d'iQiyi sur un téléphone mobile Apple 1. Ouvrez les paramètres du téléphone, puis cliquez sur [AppleID] en haut de l'interface des paramètres. 2Cliquez sur [S'abonner] sur l'interface AppleID pour sélectionner

Angular.js est une plateforme JavaScript librement accessible pour créer des applications dynamiques. Il vous permet d'exprimer rapidement et clairement divers aspects de votre application en étendant la syntaxe HTML en tant que langage de modèle. Angular.js fournit une gamme d'outils pour vous aider à écrire, mettre à jour et tester votre code. De plus, il offre de nombreuses fonctionnalités telles que le routage et la gestion des formulaires. Ce guide expliquera comment installer Angular sur Ubuntu24. Tout d’abord, vous devez installer Node.js. Node.js est un environnement d'exécution JavaScript basé sur le moteur ChromeV8 qui vous permet d'exécuter du code JavaScript côté serveur. Être à Ub

Après la mise à niveau du système win101909, certains amis voudront peut-être annuler le mot de passe de l'écran de verrouillage de leur ordinateur. Si vous ne savez pas quoi faire, je pense que nous pouvons trouver les options de compte dans la fenêtre des paramètres de l'ordinateur. Jetons un coup d'œil aux méthodes spécifiques. Comment annuler le mot de passe de l'écran de verrouillage dans win101909 : 1. Appuyez d'abord sur Win+I pour ouvrir l'interface des paramètres. 2. Recherchez ensuite l'option de connexion au compte, puis définissez-la comme indiqué sur la figure. Comment annuler la connexion par mot de passe à la mise sous tension dans win101909 : 1. Exécutez regedit pendant l'exécution pour ouvrir le registre et accédez au chemin suivant : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\Cu
