面试题答案
一键面试- 思路:
- 在Angular中,
FormGroup
和FormControl
都有reset
方法。调用FormGroup
的reset
方法时,它会递归地对所有子FormGroup
和FormControl
进行重置。 - 对于自定义验证器,
reset
方法默认会将验证状态恢复到初始状态,因为它会重新运行验证逻辑。
- 在Angular中,
- 关键代码:
- 假设在组件中有一个
FormGroup
实例,例如在组件的TypeScript代码中:
import { Component } from '@angular/core'; import { FormGroup, FormControl, Validators } from '@angular/forms'; function customValidator(control: FormControl) { // 自定义验证逻辑 if (control.value === 'invalidValue') { return { customError: true }; } return null; } @Component({ selector: 'app - my - form', templateUrl: './my - form.component.html', styleUrls: ['./my - form.component.css'] }) export class MyFormComponent { myForm: FormGroup; constructor() { this.myForm = new FormGroup({ innerGroup: new FormGroup({ control1: new FormControl('', [Validators.required, customValidator]) }) }); } resetForm() { this.myForm.reset(); } }
- 在模板(
my - form.component.html
)中:
当点击“Reset Form”按钮时,<form [formGroup]="myForm"> <div formGroupName="innerGroup"> <input formControlName="control1"> <div *ngIf="myForm.get('innerGroup.control1').hasError('required')">This field is required.</div> <div *ngIf="myForm.get('innerGroup.control1').hasError('customError')">This is a custom error.</div> </div> <button (click)="resetForm()">Reset Form</button> </form>
resetForm
方法会被调用,myForm
及其所有子控件的值会被清空,验证状态也会恢复到初始状态。 - 假设在组件中有一个