詳細ガイド
テンプレート

イベントリスナーの追加

Angularは、イベント名とイベントが発生するたびに実行されるステートメントを括弧で囲むことで、テンプレート内の要素にイベントリスナーを定義することをサポートしています。

ネイティブイベントのリスナー

HTML要素にイベントリスナーを追加する場合は、イベントを括弧 () で囲みます。これにより、リスナーのステートメントを指定できます。

      
@Component({  template: `    <input type="text" (keyup)="updateField()" />  `,  ...})export class AppComponent({  updateField(): void {    console.log('Field is updated!');  }})

この例では、Angularは <input> 要素が keyup イベントを発行するたびに updateField を呼び出します。

clickkeydownmouseover などのネイティブイベントのリスナーを追加できます。詳細については、MDNの要素のすべての利用可能なイベントをご覧ください。

イベント引数へのアクセス

Angularは、すべてのテンプレートイベントリスナーで、イベントオブジェクトへの参照を含む $event という名前の変数を提供します。

      
@Component({  template: `    <input type="text" (keyup)="updateField($event)" />  `,  ...})export class AppComponent {  updateField(event: KeyboardEvent): void {    console.log(`The user pressed: ${event.key}`);  }}

キー修飾子の使用

特定のキーの特定のキーボードイベントをキャプチャする場合は、次のようなコードを記述できます。

      
@Component({  template: `    <input type="text" (keyup)="updateField($event)" />  `,  ...})export class AppComponent {  updateField(event: KeyboardEvent): void {    if (event.key === 'Enter') {      console.log('The user pressed enter in the text field.');    }  }}

ただし、これは一般的なシナリオであるため、Angularではピリオド(.)文字を使用して特定のキーを指定することでイベントをフィルタリングできます。これにより、コードを簡素化できます。

      
@Component({  template: `    <input type="text" (keyup.enter)="updateField($event)" />  `,  ...})export class AppComponent({  updateField(event: KeyboardEvent): void {    console.log('The user pressed enter in the text field.');  }})

追加のキー修飾子を追加できます。

      
<!-- Matches shift and enter --><input type="text" (keyup.shift.enter)="updateField($event)" />

Angularは、altcontrolmetashift の修飾子をサポートしています。

キーボードイベントにバインドするキーまたはコードを指定できます。キーとコードフィールドは、ブラウザのキーボードイベントオブジェクトのネイティブな部分です。デフォルトでは、イベントバインディングは、キーボードイベントのキー値を使用することを前提としています。

Angularでは、組み込みの code サフィックスを提供することで、キーボードイベントのコード値も指定できます。

      
<!-- Matches alt and left shift --><input type="text" (keydown.code.alt.leftshift)="updateField($event)" />

これは、異なるオペレーティングシステム間でキーボードイベントを一貫して処理する場合に役立ちます。たとえば、MacOSデバイスでAltキーを使用する場合、key プロパティはAltキーで既に修飾された文字に基づいてキーを報告します。これは、Alt + Sのような組み合わせが 'ß'key 値を報告することを意味します。ただし、code プロパティは、生成された文字ではなく、押された物理的なまたは仮想的なボタンに対応します。