2017-04-07 56 views
6

遷移到角4後,我的模板驅動的表單出現了一個奇怪的問題。我的required attr的輸入似乎被打破。我想這個屬性默認爲novalidate。但我需要一些html5驗證。試過novalidate="false"但沒有成功。 有什麼方法可以啓用驗證?現在它似乎使用反應形式與Validators.required是唯一的方法。角4.0.0 novalidate屬性

謝謝!

我的HTML組件的代碼片段:

<form (submit)="savePhone(phone);" novalidate="false"> 
<h3>Новый телефон</h3> 
<md-input-container> 
    <input mdInput placeholder="Номер телефона" 
      onlyNumber="true" name="number" 
      [(ngModel)]="phone.number" required> 
</md-input-container> 
<md-select placeholder="Источник получения" (ngModel)="phone.source" name="source"> 
    <md-option *ngFor="let source of sources" [value]="source"> 
     {{ source }} 
    </md-option> 
</md-select> 
<textarea name="comment" placeholder="Текст комментария" 
      [(ngModel)]="phone.comment" name="comment"> 
</textarea> 
<div layout="row" layout-align="end"> 
    <button class="button button--success" type="submit"> 
     Добавить 
    </button> 
</div> 

回答

14

要啓用HTML5驗證使用

<form (submit)="savePhone(phone);" ngNativeValidate> 

參見NgNoValidate source at GitHub

+0

謝謝你,夥計!奇蹟般有效! –

+2

詳細說明:默認情況下,Angular4自動在ngForm(您的表單標籤)中添加'novalidate'。正如我們所知,'novalidate'禁用HTML5本地瀏覽器驗證。如果你想啓用HTML5驗證,就像@Günter說的那樣,在表單標籤中添加Angular的'ngNativeValidate'屬性。參考:https://github.com/angular/angular/issues/15531 –