2017-07-15 65 views
1

在angular 2中,我只想在用户离开字段区域后才进行客户端验证。这是因为,当用户进入诸如电子邮件或电话等领域时,他们将始终得到错误,直到他们输入完整的电子邮件,这不是最佳的用户体验。Angular 2表单验证错误

目前我已经使用

address1: ['', Validators.compose([Validators.required, 
       Validators.maxLength(128), Validators.minLength(5)])], 

模板:

<div class="addres"> 
    <label class="form_label asterisk">Address Line 1</label> 
    <textarea class="form_input " formControlName="address1"></textarea> 
    <div class="error" *ngIf="addDealerForm.controls['address1'].errors && (addDealerForm.controls['address1'].touched)"> 
     <div *ngIf="addDealerForm.controls['address1'].hasError('required')"> 
      Address1 is required. 
     </div> 
     <div *ngIf="addDealerForm.controls['address1'].hasError('maxlength')"> 
      Exceeded maximum character length. 
     </div> 
     <div *ngIf="addDealerForm.controls['address1'].hasError('minlength')"> 
      Enter minimum character length. 
     </div> 
    </div> 
</div> 

帮我如何解决这个问题。

+0

我想你刚才想要使用'.dirty'而不是'.touched'。 – developer033

回答

0

我想你需要在(blur)方法上设置验证。对于前

//组件

onBlur() { 
     this.formControl.get(name).setValidators('', [Validators.minLength(3)); 
    } 

//形式

<textarea class="form_input " formControlName="address1" (blur)="onBlur()"></textarea> 

这是否帮助

也看到这个discussion可帮助全

+1

谢谢shailesh – dineshkd