2017-11-15 5 views
0

私のアプリケーションでは、リスト内のデータをフィルタリングするために使用されるグローバル検索フィールドがあり、リストには複数のカラムがあります。他のコンポーネントからフィルタ値(入力値に設定)が設定されていますが、入力に手動キーボードイベント(キー入力)アクションをトリガする必要があります。angle4のキーボードイベント(入力キー)をトリガー

私はviewChildデコレータで試しました。

component.html

<input #gb type="text" placeholder="Global search.." class="changeListComponent_inputSearch" [(ngModel)]="jiraRef" /> 

component.ts

@ViewChild('gb') gb:ElementRef;   
this.jiraRef = jiraRef; 
const event = new KeyboardEvent("keypress",{ "which ": "13"}); 
this.gb.nativeElement.focus(); 
this.gb.nativeElement.dispatchEvent(event); 

私は値を設定し、フォーカスが、キーボードイベントがトリガされていない作ることができ、これを使用しました。

答えて

0

あなたは、単に

<input type=text (keypress)="eventHandler($event)"> 

eventHandler(event) { 
    console.log(event, event.keyCode, event.keyIdentifier); 
} 

ソリューションが Get which key pressed from (keypress) angular2

+0

私はプログラム的に –

+0

はい、あなたがキーを押すたびに、イベントがトリガされるように、KeyPressイベントをバインドする必要がキーボードイベントをトリガする必要があります。 – Harry

+0

手動イベントキーのプレスではなく、JavaScriptコードからテキストボックスにEnterキーを表示する必要があります。 –

0

がjsのネイティブコードを使用してイベントを、キーをトリガこの回答に基づいて使用することができます。
id属性を要素参照とともに入力要素に配置しました。

myコンポーネントの内部から新しい関数を作成しました。

triggerEvent(el, type) { 
    if ('createEvent' in document) { 
     var e = document.createEvent('HTMLEvents'); 
     e.initEvent(type, false, true); 
     el.dispatchEvent(e); 
    } else { 
     var e = document.createEventObject(); 
     e.eventType = type; 
     el.fireEvent('on'+e.eventType, e); 
    } 
} 

var el=document.getElementById('gb-search'); 
this.triggerEvent(el,'keyup'); 
関連する問題