我正在尝试使用https://github.com/TheSharpieOne/angular-validation-match中的角度验证匹配。我无法获得匹配项以触发任何类型的表单验证。现在,即使密码不同,也不会显示密码不匹配。这可能是什么原因?下面是html。
<form name="vm.changeForm"
ng-submit="vm.changeForm.$valid && vm.attemptChange(password);"
>
<md-input-container class="md-block">
<input required
type="password"
placeholder="New Password"
name="passwordName"
ng-model="password"
/>
<div ng-messages="vm.changeForm.passwordConfirm.$error"
ng-if="vm.changeForm.passwordConfirm.$touched"
role="alert"
>
<div ng-message="required">Please enter a password.</div>
</div>
</md-input-container>
<md-input-container class="md-block">
<input required
type="password"
placeholder="Confirm New Password"
name="myConfirmField"
ng-model="passwordConfirm"
match="password"
/>
<div ng-show="vm.changeForm.passwordConfirm.$error.match"
ng-if="vm.changeForm.passwordConfirm.$touched"
role="alert">Passwords do not match</div>
</md-input-container>
</form>
答案 0 :(得分:2)
备注:强>
您在同一div
使用ng-if和ng-show,这是不必要的,您可以简单地使用简单的ng-if
。
您必须使用name
属性而不是ng-model
。
因此,由于您的input
名称是 myConfirmField ,您必须将其替换为:
<div ng-show="vm.changeForm.passwordConfirm.$error.match" ng-if="vm.changeForm.passwordConfirm.$touched" role="alert">Passwords do not match</div>
有:
<div ng-if="vm.changeForm.myConfirmField.$touched && vm.changeForm.myConfirmField.$error.match" role="alert">Passwords do not match</div>
然后你应该得到预期的结果。