我正在使用Angular 4,Reactive表单。我想在用户点击“提交/创建帐户”按钮时显示验证错误消息。 这是我正在使用的HTML和打字稿代码。
<form [formGroup]="signupForm" (ngSubmit)="onSubmit()">
<div class="form-group">
<input type="text"
id="firstname"
name="firstname"
formControlName="firstname"
placeholder="First Name">
<span *ngIf="!signupForm.get('firstname').valid && signupForm.get('firstname').touched"
class="help-block"> Please Enter First Name (Minimum 2 Characters)</span>
</div>
<div class="form-group">
<input type="text"
id="lastname"
name="lastname"
formControlName="lastname"
placeholder="Last Name">
<span *ngIf="!signupForm.get('lastname').valid && signupForm.get('lastname').touched"
class="help-block"> Please Enter Last Name (Minimum 2 Characters)</span>
</div>
<div class="form-group">
<button type="submit"
class="btn btn-success btn-lg btn-qte">Create Account</button>
</div>
</form>
TYPE SCRIPT CODE
export class UserRegistrationComponent implements OnInit {
signupForm: FormGroup;
ngOnInit() {
this.signupForm = new FormGroup({
'firstname': new FormControl(null, [Validators.required, Validators.minLength(2)]),
'lastname': new FormControl(null, [Validators.required, Validators.minLength(2),]),
'businessname': new FormControl(null),
'phonenumber': new FormControl(null, [Validators.required]),
'email': new FormControl(null, [Validators.required, Validators.email]),
'password': new FormControl(null, [Validators.required]),
'confirmpassword': new FormControl(null, Validators.required)
});
}
onSubmit() {
console.log(this.signupForm)
}
}
答案 0 :(得分:10)
像
这样的东西onSubmit() {
console.log(this.signupForm)
this.signupForm.controls['firstname'].markAsTouched()
}
答案 1 :(得分:2)
您可以使用markAllAsTouched()
方法执行此操作。
它将所有表单控件标记为已触摸,并在需要时触发验证错误
onSubmit() {
this.signupForm.markAllAsTouched();
}
答案 2 :(得分:1)
要通过touched
获取表单控件的dirty
,valid
,formGroup
等属性,请使用:
signupForm.controls.firstname.touched
。同样地,您可以获得有效和无效等其他属性。
如果您已创建FormControl
的单个对象,则可以在不使用firstname.touched
的情况下将该对象属性作为formGroup
进行访问。
有关模型驱动表单中验证的更多信息,请参阅此处的Model Driven Form Validations。