2016-12-12 12 views
6

私はスプレッドシートに似たUIを表示するコンポーネントを持っています。変更可能なオブジェクトへの双方向バインディング[(ngModel)]を持つ要素はたくさんあります。2ウェイバインディングで多くの入力要素を持つAngular2のパフォーマンス

入力数が100を超えて大きくなるとすぐに、UIが低速になります。プロファイラは、Decimal形式(小数点以下の桁数)で多くの時間を示します。何とか不変オブジェクトを使用して

  1. は、私は可能な解決策のカップルを考えることができますか?

  2. 2ウェイデータバインディングをカスタマイズしますか?

私はChangeDetectionStrategy OnPushを使用していないのですが、私はこれが役立つとどのように実際に[(ngModel)]でそれを実装するために、HTML入力にどのようになど興味があります。

+0

あなたは 'changeDetection:ChangeDetectionStrategy.OnPush'を使用していますか? –

+0

いいえ、私はChangeDetectionStrategy OnPushを使用していません – geejay

+1

これは、作業の変更検出でどのくらいの労力を必要とするかを、きめ細かな制御で改善するための最初の手段です。 –

答えて

1

NgModelはディレクティブなので、変更検出方法はサポートされていません。つまり、NgModelを避けるべきです。唯一の方法は、OnPush戦略を使用し、入力フィールドをラップするカスタムコンポーネントを作成することです。

2

ページの多くの入力フィールドは、CPUとユーザーの両方にとってストレスです。

多くの入力フィールドを含むスプレッドシートを同時に表示するのではなく、セルを入力フィールドにするのはフォーカスを合わせたときだけにし、それ以外の場合はセルの値のみを表示します。編集中の現在のセルの入力チェックで* ngIfを使用します。

この方法では、目的の機能を維持できるだけでなく、注目しているスプレッドシートセルのみを入力にすることで、ページのパフォーマンスが向上するはずです。

関連する問題