テンプレートに頼らずフォームをプログラムで管理する場合、リアクティブフォームが答えとなります。
このアクティビティでは、リアクティブフォームの設定方法を学びます。
-
ReactiveForms
モジュールのインポートapp.component.ts
で、@angular/forms
からReactiveFormsModule
をインポートし、コンポーネントのimports
配列に追加します。import { ReactiveFormsModule } from '@angular/forms';@Component({selector: 'app-root',standalone: true,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のリアクティブフォームの使い方を学びました。
このアクティビティは素晴らしいですね。フォームの検証について学ぶために進んでください。