私は何かシンプルなことをしているので、私は間違っているかもしれませんが、私のソリューションは非常にバグがあります。Angular2は、キー入力またはキーダウン時に入力値全体を取得します
入力テキストが変更されたとき(キーダウン時)、第三者コンポーネントのフィルタを実行するだけです。動作しませんでした
最初のアプローチ:
<input type="text" placeholder="Name Fitler" [(ngModel)]="NameFilter" (keydown)="keyDown($event)" />
問題はNameFilterは、最新の文字で更新される前に、私のフィルタは
第二のアプローチの背後にある1つの文字であるように、キーが押されて、実行されるということですそれは動作しませんでした
keyDown(event:KeyboardEvent){
var input = <HTMLInputElement>event.srcElement;
this.NameFilter = input.value + event.key; // <-- have to add the latest character
this.filterChanged();
}
この種のw orksですが、バグが発生しやすいです。 input.valueには最新の文字がありませんので追加していますが、奇数キーなどについて心配する必要があります。できればkeyCodeのフィルタリングを避けたいと思います。
別のイベントはありますか?最新のキーを含むその値を取得するより良い方法ですか? (私は、キーアップを待ちたい、または入力しないでください)
更新これは完全にあなたが(ngModelChange)="..."
を使用することができます
<input type="text" placeholder="Name Fitler" [(ngModel)]="NameFilter" (ngModelChange)="filterChanged()" />
を参照してください。おかげさまで、私は車輪を再構築しないようにしていますが、これを達成しようとしています。http://stackoverflow.com/questions/37800841/input-mask-fields-in-angular2-forms/37887432#37887432 –
これは簡単なシナリオですが、angle2とdomイベントの間には含まれています –
'keydown'の代わりに' ngModelChange'を試してみてください –