[英]Angular Reactive form submits twice and shows invalid error message after successful submission
[英]Angular reactive form submits when invalid
我在 Angular 应用程序中有一个反应形式。 问题是每当我尝试提交无效表单时,表单都会提交(页面刷新;我在数据库中看不到任何内容;我认为这只是行为)。
我希望页面不刷新并使用我的 function 显示所有无效字段。 下面是我的一段代码。
<form class="form-signup" [formGroup]="newCustomerForm" (ngSubmit)="validateAllFormFields() && newCustomerForm.valid && registerNewMember()">
<! I am unbale to deactivate this button when form is invalid-->
<button type="submit" class="btn-signup" [disable]="form.invalid">Sign Up</button>
</form>
//function which makes all fields touched.
public validateAllFormFields(formGroup: FormGroup): boolean {
Object.keys(formGroup.controls).forEach(field => {
const control = formGroup.get(field);
if (control instanceof FormControl) {
control.markAsTouched({ onlySelf: true });
}
else if (control instanceof FormGroup) {
this.validateAllFormFields(control);
}
});
return true;
}
在此示例中,仅当表单有效([disabled]=".form,valid")时才会启用提交按钮。 意味着必须通知用户名(并且还必须是有效的用户名)。
form: FormGroup;
onSubmit()
{
this.form=this.fb.group({
UserName:['',[Validators.required,Validators.minLength(4)]]
})
}
<form class="form-horizontal" [formGroup]="form">
<div class="form-group required">
<label id="label">Username</label>
<input class="form-control" id="username" formControlName="UserName">
<div><div *ngIf="service.Name && service.Name.invalid && (service.Name.dirty || service.Name.touched)"
class="alert alert-danger">
<div *ngIf="service.Name && service.Name.errors?.required" >
User Name is required
</div>
<div *ngIf="service.Name && service.Name.errors?.minlength">
Minimum 4 characters required
</div>
</div></div>
</div>
<div class="form-group col-md-8 offset-md-2">
<button type="submit" class="btn btn-primary btn-block" [disabled]="!form.valid">Submit<button>
</div>
你的表单变量名是什么? 它是newCustomerForm
还是只是form
?
此外,您编写了 [ disable ]="form.invalid" 而不是 [ disabled ]="newCustomerForm.invalid"。 (如果您的表单名称是 newCustomerForm)
<form class="form-signup" [formGroup]="newCustomerForm" (ngSubmit)="validateAllFormFields() && newCustomerForm.valid && registerNewMember()">
<button type="submit" class="btn-signup" [disable]="newCustomerForm.invalid">Sign Up</button>
</form>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.