Maison > interface Web > js tutoriel > Comment gérer efficacement les événements d'entrée dans Angular 2 à l'aide de RxJS ?

Comment gérer efficacement les événements d'entrée dans Angular 2 à l'aide de RxJS ?

DDD
Libérer: 2024-10-23 10:28:01
original
270 Les gens l'ont consulté

How to Effectively Manage Input Events in Angular 2  Using RxJS?

Gestion des événements d'entrée dans Angular 2

Dans AngularJS, les développeurs pouvaient utiliser la directive ng-model-options pour empêcher les mises à jour du modèle d'entrée. Dans Angular 2, une fonctionnalité similaire est disponible grâce à l'utilisation des opérateurs RxJS.

Anti-rebond avec RxJS

Pour anti-rebond d'un modèle dans Angular 2, exploitez le debounceTime() opérateur sur les changements de valeur observables du contrôle de formulaire. Cet opérateur retarde les émissions de valeurs suivantes jusqu'à ce que le temps spécifié s'écoule après le dernier événement.

<br>import { debounceTime } from 'rxjs/operators';</p>
<p>formCtrlSub = this. firstNameControl.valueChanges</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">.pipe(
    debounceTime(1000)
)
.subscribe(newValue => this.firstName = newValue);
Copier après la connexion

Limitation des événements

Vous pouvez également limiter les événements, tels que les événements de redimensionnement, pour empêcher mises à jour excessives. L'opérateur throttleTime() garantit qu'une seule valeur est émise dans la fenêtre de temps spécifiée.

<br>import { throttleTime } from 'rxjs/operators';</p>
<p>resizeSub = Observable.fromEvent(window, 'resize')</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">.pipe(
    throttleTime(200)
)
.subscribe(e => {
    console.log('resize event', e);
    this.firstName += '*';  // change something to show it worked
});
Copier après la connexion

Gestion efficace des événements

Les approches ci-dessus déclenchent le changement détection à chaque événement, même lorsqu'ils sont anti-rebond ou limités. Pour une gestion plus efficace des événements, envisagez de créer des observables RxJS en dehors de la zone d'Angular, en déclenchant manuellement la détection des modifications dans les méthodes de rappel d'abonnement.

<br>ngAfterViewInit() {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">this.ngZone.runOutsideAngular(() => {
    this.keyupSub = Observable.fromEvent(this.inputElRef.nativeElement, 'keyup')
        ...
    this.resizeSub = Observable.fromEvent(window, 'resize')
        ...
});
Copier après la connexion

>

En utilisant les opérateurs RxJS et le déclencheur proactif de détection des changements, vous pouvez gérer efficacement les événements d'entrée dans Angular 2, garantissant des interactions utilisateur fluides et réactives.

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!

source:php
Article précédent:Comment désactiver les boutons HTML à l'aide de JavaScript ? Article suivant:Comment implémenter l'anti-rebond dans Angular 2 ?
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Derniers numéros
Rubriques connexes
Plus>
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal