2017-10-20 91 views
0

可能看起來像一個奇怪的形式,但我爲了這個問題簡化了它,這不是我的實際形式。但是同樣的情況發生在這裏。角4形式,禁用字段總是有效

<form (ngSubmit)="submit(form)" #form="ngForm"> 
    <div> 
     Full name: 
     <input name="fullName" required> 
    </div> 
    <div> 
     Would you like to receive birthday gifts from us? 
     <input type="checkbox" name="gifts" [(ngModel)]="isAddressEditable"> 
    </div> 
    <div> 
     Gift shipping address: 
     <input name="giftAddress" required [disabled]="!isAddressEditable"> // false (disabled) by default 
    </div> 

    <button type="submit" [disabled]="form.invalid">Register now!</button> 
</form> 

所以我們有一個帶有三個字段的模板驅動表單。 「立即註冊!」只要表單無效,按鈕將被禁用。

問題是,只要「禮品送貨地址」字段被禁用,它就不會在表單驗證中計數,並且它足以填寫全名以使表單有效。

只要我勾選複選框(「你想收到我們的生日禮物?」),輸入不再被禁用,因此驗證適用。

我不確定這是否是設計的行爲,但我想知道是否有一種方法可以對禁用的字段應用驗證。

+0

想知道這裏的用例嗎?爲什麼將禁用的字段包含在驗證中?如果你想在這裏驗證,爲什麼不在複選框上設置驗證,然後啓用該字段並激活驗證字段? – Alex

回答

0

據我所知,我之前有同樣的問題。我通過在輸入上使用「只讀」而不是「禁用」來修復它。

<input name="giftAddress" required [readonly]="!isAddressEditable"> // false (disabled) by default 

你可以試試以上建議嗎?

+0

嘗試了上述,但由於我使用的是角度材質,因此我需要使用「禁用」字段的視覺效果。當然,我可以設計一些看起來類似的東西,但我試圖找到一個乾淨的方法。謝謝你! –