在Angular 7中,可以通过设置表单控件的updateOn
属性来实现在第一次提交表单时不进行验证检查。
以下是一个示例代码,展示了如何使用updateOn
属性来实现在响应式表单中的验证检查延迟到第一次提交之后:
首先,在组件的HTML模板中定义表单:
然后,在组件的Typescript文件中创建表单并设置updateOn
属性:
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
@Component({
selector: 'app-my-component',
templateUrl: './my-component.component.html',
styleUrls: ['./my-component.component.css']
})
export class MyComponentComponent implements OnInit {
myForm: FormGroup;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.myForm = this.formBuilder.group({
name: ['', Validators.required]
}, {
updateOn: 'submit' // 设置updateOn属性为'submit'
});
}
onSubmit() {
// 在表单提交后进行验证检查
if (this.myForm.valid) {
// 表单验证通过,执行提交操作
}
}
}
在上面的代码中,我们将updateOn
属性设置为'submit'
,这意味着表单控件只会在第一次提交时进行验证检查。在表单提交之前,表单控件的状态将被视为pristine
(未修改)和untouched
(未触摸),因此不会显示验证错误消息。在第一次提交表单后,如果表单验证不通过,则会显示相应的错误消息。
请注意,updateOn
属性也可以设置为'change'
,这样表单控件将在值发生变化时立即进行验证检查。