- テンプレート駆動フォームの場合: テンプレート駆動フォームでは、HTMLのinput要素に直接バリデーションルールを設定することができます。以下は数値の入力に対するバリデーションの例です。
<input type="number" name="myNumber" [(ngModel)]="myNumber" required min="0" max="100">
<div *ngIf="myForm.controls.myNumber.invalid && (myForm.controls.myNumber.dirty || myForm.controls.myNumber.touched)">
<div *ngIf="myForm.controls.myNumber.errors.required">数値を入力してください。</div>
<div *ngIf="myForm.controls.myNumber.errors.min || myForm.controls.myNumber.errors.max">0から100の範囲で入力してください。</div>
</div>
- リアクティブフォームの場合: リアクティブフォームでは、フォームコントロールを使用してバリデーションルールを設定します。以下は数値の入力に対するバリデーションの例です。
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'app-my-form',
templateUrl: './my-form.component.html',
styleUrls: ['./my-form.component.css']
})
export class MyFormComponent implements OnInit {
myForm: FormGroup;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.myForm = this.formBuilder.group({
myNumber: ['', [Validators.required, Validators.min(0), Validators.max(100)]]
});
}
get myNumber() {
return this.myForm.get('myNumber');
}
}
<form [formGroup]="myForm">
<input type="number" formControlName="myNumber">
<div *ngIf="myNumber.invalid && (myNumber.dirty || myNumber.touched)">
<div *ngIf="myNumber.errors.required">数値を入力してください。</div>
<div *ngIf="myNumber.errors.min || myNumber.errors.max">0から100の範囲で入力してください。</div>
</div>
</form>
これらの例では、数値の入力に対して必須項目、最小値、最大値のバリデーションを設定しています。必要に応じて他のバリデーションルールを追加することもできます。
以上が、Angularでリアクティブフォームを使用して数値のバリデーションエラーを解決する方法の例です。これらのコード例を参考にして、自身のプロジェクトに適用してみてください。