📅  最后修改于: 2023-12-03 15:08:33.588000             🧑  作者: Mango
在Angular中使用表单和控件是常见的需求。在开发一个表单时,我们通常需要对表单和表单控件进行验证和状态管理,以确保输入符合预期和规范。在本文中,我们将介绍如何在Angular 10中检查表单或控件是否无效,以及如何设置表单验证。
在Angular中,表单有三种状态:有效,无效和待定。
要检查表单的状态,可以使用status
属性。
form.status // "VALID" | "INVALID" | "PENDING" | "DISABLED"
检查单个控件的状态,可以使用form.get()
方法。
form.get('controlName').status // "VALID" | "INVALID" | "PENDING" | "DISABLED"
可以通过表单的状态来动态显示错误消息和禁用提交按钮等。
<form (submit)="onSubmit()" #myForm="ngForm">
<input type="text" name="myInput" [(ngModel)]="myInput" required>
<span *ngIf="myForm.controls['myInput'].invalid">Please enter a valid input</span>
<button [disabled]="myForm.invalid">Submit</button>
</form>
在上面的代码中,我们使用myForm.controls['myInput'].invalid
来检查控件的状态,如果控件无效,我们将动态显示错误消息。我们还通过myForm.invalid
来检查表单的状态,如果表单无效,我们将禁用提交按钮。
Angular提供了不同的验证器来验证表单数据。你可以使用内置验证器或自定义验证器来验证表单。以下是一个简单的例子,说明如何在控件上设置required
验证器。
<input type="text" name="myInput" [(ngModel)]="myInput" required>
这个控件必须填写一个值,否则它将变为无效状态。同样,您可以设置其他验证器来验证输入值是否符合要求。
你还可以使用自定义验证器来验证表单数据。以下是一个自定义验证器示例。
import { Directive, Input } from '@angular/core';
import { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';
@Directive({
selector: '[equalTo][ngModel]',
providers: [{
provide: NG_VALIDATORS,
useExisting: EqualToValidator,
multi: true
}]
})
export class EqualToValidator implements Validator {
@Input() equalTo: any;
validate(control: AbstractControl): { [key: string]: any } | null {
const value = control.value;
if (value !== this.equalTo) {
return { 'equalTo': true };
}
return null;
}
}
在上面的代码中,我们创建了一个名为equalTo
的指令,该指令用于验证两个字段是否相等。我们使用validate
方法来实现自定义验证。如果两个输入字段具有不同的值,则表单将被标记为无效状态,并显示一个错误消息。
在Angular 10中,通过状态来验证表单和控件是非常重要的。您可以使用内置验证器或自定义验证器来验证表单数据。您还可以使用表单验证状态来动态显示错误消息或禁用提交按钮。在完成表单开发时,请务必熟悉表单状态和如何在表单控件上设置验证器。