Validation 默认情况下,Angular2触发验证

Validation 默认情况下,Angular2触发验证,validation,angular,angular2-forms,Validation,Angular,Angular2 Forms,我正在使用FormBuilder,并使用*ngIf=“!field.valid <input [ngFormControl]="myForm.controls['field']" type="text" id="field" #field="ngForm"> <span class="error" *ngIf="!field.valid">Error</span> 错误 总是在加载组件时,在我甚至在任何输入中键入任何内容之前,都会显示错误

我正在使用
FormBuilder
,并使用
*ngIf=“!field.valid

<input [ngFormControl]="myForm.controls['field']"
       type="text" id="field"  #field="ngForm">
<span class="error" *ngIf="!field.valid">Error</span>

错误

总是在加载组件时,在我甚至在任何输入中键入任何内容之前,都会显示
错误
。如何停止在组件加载上运行验证的Angular 2,使其仅在键入时触发?

包括检查字段是否已触碰到

<span class="error" *ngIf="!field.valid && field.dirty">Error</span>
错误

基本上,表单输入有三种类型的错误类

  • 脏-控件的值已更改时

  • 触摸-访问控件时

  • 有效-控件值有效时(根据提供的验证)

因此,根据您的要求,您需要在类中使用
脏的或触摸的
类, 您可以使用
[hidden]和*ngIf
来使用此错误类(显示错误消息)。 您可以这样使用:

<span [hidden]="name.valid" *ngIf='name.touched'><b>Required</b></span>
必需
有关使用错误类的表单,请参阅

有关错误类的更多信息,请参见此处


当您提交表单时,您希望任何无效但未触及的字段现在显示其错误消息。您将如何操作?this.myForm.markAsTouched();if(this.myForm.valid){//您的代码}else{//显示自定义错误}