AppModule.ts
Reactive Forms を利用するため、@angular/forms から ReactiveFormsModule をインポートします。import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { ReactiveFormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, ReactiveFormsModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
AppComponent.ts
コンポーネント上では、@angular/forms から FormBuilder をインポートします。各入力フォームコントロールは FormControl で生成します。そして、これら入力フォームコントロールをまとめ上げるのが、group メソッドの役割です。
import { Component } from '@angular/core'; import { FormBuilder, FormControl } from '@angular/forms'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { title = 'build-test'; id = new FormControl(''); password = new FormControl(''); loginForm = this.fb.group({ id: this.id, password: this.password }); constructor(private fb: FormBuilder) { } login() { console.log('id: ', this.loginForm.get('id').value); console.log('password: ', this.loginForm.get('password').value); } }
AppComponent (HTML テンプレート)
HTML テンプレート上では、form タグの formGroup 属性に、コンポーネントで生成した FormGroup(loginForm) を指定します。form タグ配下の入力コントロールには、formControl 属性から FormControl を紐づけます。
<form [formGroup]="loginForm" (ngSubmit)="login()"> <input type="text" [formControl]="id"> <input type="password" [formControl]="password"> <input type="submit" value="ログイン"> </form>
ngSubmit に登録されている login() メソッドでは、FormGroup から FormControl を取り出して値を出力しています。
Angular に関連するトピックは次のページにまとめてあります。
Angular 機能紹介一覧
https://kainobi2.blogspot.com/2019/02/angular.html
0 件のコメント:
コメントを投稿