ホームページ >ウェブフロントエンド >jsチュートリアル >RxJS を使用して Angular でユーザー入力をデバウンスする方法?

RxJS を使用して Angular でユーザー入力をデバウンスする方法?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-23 13:17:29954ブラウズ

How to Debounce User Input in Angular Using RxJS?

Angular 2 によるデバウンス

AngularJS は、ng-model-options ディレクティブを使用してモデルをデバウンスする便利な方法を提供しました。ただし、Angular では、この機能を実現する組み込みの方法はありません。

RxJS によるデバウンス

Angular は、リアクティブ プログラミングに RxJS を活用し、オブザーバブルを作成する手段を提供します。イベント処理やデータ ストリームなどに使用できます。 RxJS は debounceTime() オペレーターを提供します。これは、最新の発行から指定された期間が経過した後にのみ値を発行します。

RxJS DebounceTime の使用例

デバウンスを実装するにはAngular の場合は、次の手順に従ってください:

<code class="typescript">import {Component} from '@angular/core';
import {FormControl} from '@angular/forms';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/debounceTime';

@Component({
  selector: 'my-app',
  template: `<input type=text [value]="firstName" [formControl]="firstNameControl">
               <br>{{firstName}}`
})
export class AppComponent {
  firstName = 'Name';
  firstNameControl = new FormControl();
  ngOnInit() {
    // Debounce keystroke events
    this.firstNameControl.valueChanges
      .debounceTime(1000)
      .subscribe(newValue => this.firstName = newValue);
  }
}</code>

このコードは debounceTime(1000) を使用して、新しい値の発行を 1000 ミリ秒遅らせます。その期間内にキーストロークが発生しても、firstName プロパティの即時更新はトリガーされません。

パフォーマンスに関する考慮事項

RxJS オブザーバブルを使用したデバウンスはトリガーされないため効率的です。デバウンス期間が経過しない限り、変更検出は行われません。ただし、パフォーマンスをさらに向上させることができるため、NgZone.runOutsideAngular() を使用して Angular のゾーンの外側にオブザーバブルを作成することを検討してください。

以上がRxJS を使用して Angular でユーザー入力をデバウンスする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。