5

可能看起来像一个奇怪的形式,但为了这里的问题,我简化了它,这不是我的实际形式。但同样的情况也发生在这里。

<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>

所以我们有一个包含三个字段的模板驱动表单。“立即注册!” 只要表单无效,按钮就会被禁用。

问题是,只要“礼品收货地址”字段被禁用,它就不算在表单验证中,填写全名就足以使表单有效。

一旦我勾选复选框(“您想收到我们的生日礼物吗?”),输入不再被禁用,因此验证适用。

我不确定这是否是设计的行为,但我想知道是否也有办法对禁用的字段应用验证。

4

1 回答 1

8

据我所知,我之前也遇到过同样的问题。我通过在输入上使用“只读”而不是“禁用”来修复它。

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

你可以试试上面的建议吗?

于 2017-10-20T09:39:31.770 回答