【发布时间】:2020-08-12 16:55:23
【问题描述】:
我有一个 formGroup,里面有一个提交按钮:
<form [formGroup]="myGroup" (ngSubmit)="submitForm()">
<input type="text" formControlName="name">
<button type="submit">Submit</button>
</form>
当我的组件初始化时,我调用这个函数来构建表单:
buildForm() {
this.myGroup = new FormGroup({
name: new FormControl(null, [Validators.required]),
});
}
当我不填写输入并单击按钮时,我的组件正在调用submitForm()。
我放了一个console.log(myGroup.valid),它是false,但仍然调用(ngSubmit) 事件。
我还有其他组件,似乎当表单无效时,当用户单击提交按钮时,Angular 会自动不调用提交函数。
我不知道我是否忘记了 Angular 做这个自动检查,或者我真的需要在我的提交函数中做一些事情,比如:
if(this.myGroup.valid) {}
【问题讨论】:
-
如果表单无效,如何禁用提交按钮?
-
要么禁用
[disabled]="!myGroup.valid"的按钮,要么检查submitForm()中的表单是否有效 -
看起来不错,但我仍然很好奇这在某些组件中是如何工作的,而在其他组件中,当表单无效时调用提交函数
-
嗯,您可以尝试将控件初始化为
new FormControl('', { validators: Validators.required, updateOn: 'change' }),但如果它在某些组件中有效而在其他某些组件中无效,那就太奇怪了。 -
如果您的表单无效,无论哪种方式禁用按钮都是一种很好的做法,所以我会这样做
标签: angular