2017-07-15 62 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