2017-07-18 82 views
0

我剛剛意識到我的錯誤消息打破,並不知道爲什麼。事實證明,添加type =「number」或任何有效的html類型屬性,不會觸發錯誤消息(minLength或maxLength,但尚未測試其他人)。輸入類型屬性打破角度形式驗證程序

組件:

createForm() { 
this.shortForm = this.fb.group({ 
    firstName: ['', [Validators.required, Validators.minLength(1), Validators.maxLength(50) ]], 
    lastName: ['', [Validators.required, Validators.minLength(1), Validators.maxLength(50)]], 
    primaryAddrZip: ['', [Validators.required, Validators.minLength(5), Validators.maxLength(5)] ]  
}) 

模板:

<md-input-container> 
    <input 
     type="number" 
     formControlName="primaryAddrZip" 
     mdInput placeholder="Zip code" 
     data-testing="zip" 
     (keypress)="numbersOnlyValidation($event, 'zip'); maxLength($event, 5)" 
     (paste)="$event.preventDefault()" 
    > 
    <md-error data-testing="zip-req" *ngIf="shortForm.get('primaryAddrZip').hasError('required') && shortForm.get('primaryAddrZip').touched"> 
     Zip code is required 
    </md-error> 
    <md-error data-testing="zip-min-five-digits" *ngIf="shortForm.get('primaryAddrZip').hasError('minlength') && shortForm.get('primaryAddrZip').touched"> 
     Minimum of 5 characters . <!--WILL NOT TRIGGER--> 
    </md-error> 
    </md-input-container> 

這是一個知道是不是BUG還是我使用不當驗證?

+0

根據您的表單生成器,您定義了primaryAddrZip一個字符串(primaryAddrZip:[''......)。改變這個數字可能是? – Rama

+0

它尚未在材料中實現 – Aravind

+0

@Rama我會如何將其更改爲一個數字?括號後面的單引號是表單字段的值。我認爲? – Anthony

回答

1

這是 「設計」,在HTML 5

maxLength是字符串。這是從MDN文檔:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input#attr-maxlength

最大長度如果type屬性的值是文本,電子郵件,搜索, 密碼,電話或網址,該屬性指定的 最大字符數(Unicode碼點),用戶可以輸入。對於其他 控制類型,它將被忽略。

+0

有趣。我不知道利用HTML 5屬性規則的角度驗證器。 – Anthony