在Angular中编写我自己的表单自定义验证时,我注意到有一些用例表单。$ valid将为false(因为如果输入不正确,我将设置它),但检查表单。 $ invalid仍然会产生true,这会导致验证通过并提交表单。会导致这种行为的原因是什么?
示例代码:
if (!vm.incentive.donor) {
form.$valid = false; //if this gets set...
}
if (form.$invalid) {
return false; //...this never gets hit, form.$invalid is false
}
return save(goToPayment); //and thus the form gets submitted
答案 0 :(得分:1)
他们是对立的。如果该值有效,则$valid
为true
而$invalid
为false
,如果值无效,则为{}。它与$dirty
和$pristine
的情况相同。