Angular4 / 5でのイベントハンドラーのパフォーマンスの問題

ムンナバブ

私の質問がばかげている場合は申し訳ありませんが、アプリケーションで遅延の問題が発生しています。KEYPRESSイベントハンドラーが原因です。アプリケーション全体でこの以下のディレクティブを使用しています。をチェックKeyPressHostListenerます。キーが押されると、このディレクティブは正規表現で値をチェックしpreventDefault、条件がfalseの場合に実行します。

private regexMap = { // add your own
    '999': /^([0-9]){0,3}$/g,
    '9999': /^([0-9]){0,4}$/g,
    ...
    ...
}

@HostListener('keypress', [ '$event' ])
public nInput(event: KeyboardEvent) {
    // Allow Backspace, tab, end, and home keys
    if (this.specialKeys.indexOf(event.key) !== -1) {
        return;
    }
    this.pattern = this.regexMap[this.validationFormat];
    const current: string = this.el.nativeElement.value;
    const next: string = current.concat(event.key);
    if (next && !String(next).match(this.pattern)) {
        event.preventDefault();
    }
}

この問題を修正する方法がわかりません。debounceTimeこの問題修正されますか?このメソッドにデバウンスを追加する方法がわかりません。誰かがこの問題を解決するのを手伝ってください。

ムンナバブ

DebounceTimeの問題を修正しました:)ヘルプSubjectでデバウンス時間を追加しました。基本的に、ユーザーが何かを入力すると、すべてのアクションが停止し、EVENT(キーが押された値)がSUBJECTに送信され、サブジェクトのデバウンス時間で300ms待機してから、機能テストが実行されます。

    private keyPressed = new Subject();
    private subscription: Subscription;
    private pattern: RegExp;
    private regexMap = { // add your own
     '999': /^([0-9]){0,3}$/g,
     '9999': /^([0-9]){0,4}$/g,
      ...
      ...
   }
    private specialKeys: string[] = ['Backspace', 'Tab', 'End', 'Home'];

    constructor(private el: ElementRef) {
    }

    public ngOnInit() {
        this.subscription = this.keyPressed.pipe(debounceTime(300)).subscribe(
            (event) => this.checkRegExpression(event)
        );
    }

    public ngOnDestroy() {
        this.subscription.unsubscribe();
    }

    @HostListener('keypress', ['$event']) public nInput(event: KeyboardEvent) {
        event.preventDefault();
        event.stopPropagation();
        this.keyPressed.next(event);
    }

    private checkRegExpression(event) {
        if (this.specialKeys.indexOf(event.key) !== -1) {
            return;
        }
        this.pattern = this.regexMap[this.validationFormat];
        const current: string = this.el.nativeElement.value;
        const next: string = current.concat(event.key);
        if (next && !String(next).match(this.pattern)) {
            event.preventDefault();
        }
    }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Angular4のインストールの問題

分類Dev

Angular4のDatepicker

分類Dev

Angular4 +のRaphael

分類Dev

IE11でのAngular4のパフォーマンス/ CPU使用率

分類Dev

Angular4でのハイパーリンクの分割

分類Dev

Angular4 HttpClientTypeCheckの問題

分類Dev

Angular4でのフォントファミリーのインポート

分類Dev

Angular4での子ルーティングの問題

分類Dev

Angular4 / TypescriptのAngular ForEach?

分類Dev

Angular4マルチレベルアコーディオンの問題

分類Dev

ハイブリッドアプリでのサードパーティのAngular4コントロール

分類Dev

Angular4で同等の$ locationChangeStart

分類Dev

ext4 / LUKS問題へのペンドライブフォーマット

分類Dev

Angular4 +フォームの検証

分類Dev

Angular4ズーム

分類Dev

Spring 4TaskSchedulerのパフォーマンスの問題

分類Dev

Spring 4TaskSchedulerのパフォーマンスの問題

分類Dev

Spring 4TaskSchedulerのパフォーマンスの問題

分類Dev

$ uibModal(angular JS)のパフォーマンスの問題

分類Dev

ngIfのAngular4の問題

分類Dev

Angular4プロジェクトでのノードサスの問題

分類Dev

Angular4コンポーネントの双方向バインディングの問題

分類Dev

Angular4コンポーネントの入力パラメーターをバインドする方法

分類Dev

Angular4でのブートストラップ4グリッドの問題

分類Dev

Angular4のChangeDetectorRefのエラー

分類Dev

HTMLでメソッドを呼び出す際のAngular2のパフォーマンスの問題

分類Dev

Angular4でのBootstrap4の使用

分類Dev

Angular4以降のポーランド語ロケール

分類Dev

Angular4のDOM要素にイベントリスナーを追加します

Related 関連記事

  1. 1

    Angular4のインストールの問題

  2. 2

    Angular4のDatepicker

  3. 3

    Angular4 +のRaphael

  4. 4

    IE11でのAngular4のパフォーマンス/ CPU使用率

  5. 5

    Angular4でのハイパーリンクの分割

  6. 6

    Angular4 HttpClientTypeCheckの問題

  7. 7

    Angular4でのフォントファミリーのインポート

  8. 8

    Angular4での子ルーティングの問題

  9. 9

    Angular4 / TypescriptのAngular ForEach?

  10. 10

    Angular4マルチレベルアコーディオンの問題

  11. 11

    ハイブリッドアプリでのサードパーティのAngular4コントロール

  12. 12

    Angular4で同等の$ locationChangeStart

  13. 13

    ext4 / LUKS問題へのペンドライブフォーマット

  14. 14

    Angular4 +フォームの検証

  15. 15

    Angular4ズーム

  16. 16

    Spring 4TaskSchedulerのパフォーマンスの問題

  17. 17

    Spring 4TaskSchedulerのパフォーマンスの問題

  18. 18

    Spring 4TaskSchedulerのパフォーマンスの問題

  19. 19

    $ uibModal(angular JS)のパフォーマンスの問題

  20. 20

    ngIfのAngular4の問題

  21. 21

    Angular4プロジェクトでのノードサスの問題

  22. 22

    Angular4コンポーネントの双方向バインディングの問題

  23. 23

    Angular4コンポーネントの入力パラメーターをバインドする方法

  24. 24

    Angular4でのブートストラップ4グリッドの問題

  25. 25

    Angular4のChangeDetectorRefのエラー

  26. 26

    HTMLでメソッドを呼び出す際のAngular2のパフォーマンスの問題

  27. 27

    Angular4でのBootstrap4の使用

  28. 28

    Angular4以降のポーランド語ロケール

  29. 29

    Angular4のDOM要素にイベントリスナーを追加します

ホットタグ

アーカイブ