📅  最后修改于: 2023-12-03 14:57:23.911000             🧑  作者: Mango
在开发过程中,我们经常会遇到表单验证的需求。Angular 提供了一种强大的表单验证机制,可以轻松地进行各种验证操作。其中一种验证操作是角度附加到 FormControl 错误。
当 FormControl 被标记为“无效”时,可以使用 Angular 的 Validators 类附加错误。这些错误可以在模板中使用一些 Angular 内置的指令(如 *ngIf)来显示。
以下是示例代码:
import { Component } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'my-app',
template: `
<form [formGroup]="form" (ngSubmit)="onSubmit()">
<div>
<input type="text" formControlName="name">
<div *ngIf="form.get('name').touched && form.get('name').invalid && form.get('name').errors.required" class="alert alert-danger">Name is required</div>
<div *ngIf="form.get('name').touched && form.get('name').invalid && form.get('name').errors.maxLength" class="alert alert-danger">Name cannot be more than 10 characters long</div>
</div>
<button type="submit" [disabled]="!form.valid">Submit</button>
</form>
`
})
export class AppComponent {
form: FormGroup;
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
name: ['', [Validators.required, Validators.maxLength(10)]]
});
}
onSubmit() {
console.log(this.form.value);
}
}
在上面的代码中,我们创建了一个名为“form”的 FormGroup,并将其与模板的 form 元素绑定。我们还创建了一个名为“name”的 FormControl,其中有两个验证器:required 和 maxLength(10)。如果 FormControl 中有任何错误,则通过 getter 将其公开到模板中。
在模板中,我们使用 *ngIf 指令来检查是否存在错误,并在必要时显示这些错误。在这个例子中,我们使用了 form.get('name').touched 和 form.get('name').invalid 来检查 FormControl 是否已经被触摸,并且是否无效。我们还使用了 form.get('name').errors.required 和 form.get('name').errors.maxLength 来检查哪个验证器失败,并相应地显示每个错误信息。
通过这种方式附加角度到 FormControl 的错误,您可以轻松地在模板中显示表单验证错误。
希望这个介绍可以帮助您更好地理解Angular的FormControl验证机制。