テンプレートに頼らずフォームをプログラムで管理する場合、リアクティブフォームが答えとなります。
このアクティビティでは、リアクティブフォームの設定方法を学びます。
-
ReactiveForms
モジュールのインポートapp.component.ts
で、@angular/forms
からReactiveFormsModule
をインポートし、コンポーネントのimports
配列に追加します。import { ReactiveFormsModule } from '@angular/forms';@Component({ selector: 'app-root', template: ` <form> <label>Name <input type="text" /> </label> <label>Email <input type="email" /> </label> <button type="submit">Submit</button> </form> `, imports: [ReactiveFormsModule],})
-
FormGroup
オブジェクトをFormControlsで作成リアクティブフォームは、
FormControl
クラスを使用してフォームコントロール(入力など)を表します。Angularは、フォームコントロールを便利なオブジェクトにグループ化し、開発者が大規模なフォームをより簡単に処理できるようにするFormGroup
クラスを提供します。@angular/forms
からのインポートにFormControl
とFormGroup
を追加して、各フォームにFormGroup
を作成し、name
とemail
のプロパティをFormControl
として使用します。import {ReactiveFormsModule, FormControl, FormGroup } from '@angular/forms';...export class AppComponent { profileForm = new FormGroup({ name: new FormControl(''), email: new FormControl(''), });}
-
FormGroup
とFormControlsをフォームにリンク各
FormGroup
は、[formGroup]
ディレクティブを使用してフォームにアタッチする必要があります。さらに、各
FormControl
はformControlName
ディレクティブでアタッチし、対応するプロパティに割り当てることができます。次のフォームコードを使用してテンプレートを更新します。<form [formGroup]="profileForm"> <label> Name <input type="text" formControlName="name" /> </label> <label> Email <input type="email" formControlName="email" /> </label> <button type="submit">Submit</button></form>
-
フォームの更新を処理
FormGroup
からデータにアクセスする必要がある場合は、FormGroup
の値にアクセスすることで行うことができます。テンプレートを更新してフォームの値を表示します。...<h2>Profile Form</h2><p>Name: {{ profileForm.value.name }}</p><p>Email: {{ profileForm.value.email }}</p>
-
FormGroup
の値にアクセスコンポーネントクラスに、後でフォームの送信処理に使用される
handleSubmit
という新しいメソッドを追加します。 このメソッドはフォームの値を表示します。FormGroup
から値にアクセスできます。コンポーネントクラスに、フォームの送信を処理する
handleSubmit()
メソッドを追加します。handleSubmit() { alert( this.profileForm.value.name + ' | ' + this.profileForm.value.email );}
-
ngSubmit
をフォームに追加フォームの値にアクセスできるようになりました。次は、送信イベントを処理し、
handleSubmit
メソッドを使用します。 Angularには、ngSubmit
というこの特定の目的に合わせたイベントハンドラーがあります。フォーム要素を更新して、フォームが送信されたときにhandleSubmit
メソッドを呼び出します。<form [formGroup]="profileForm" (ngSubmit)="handleSubmit()">
このようにして、Angularのリアクティブフォームの使い方を学びました。
このアクティビティは素晴らしいですね。フォームの検証について学ぶために進んでください。