2016-07-06 72 views
2

我试图使用https://github.com/TheSharpieOne/angular-validation-match的角度验证匹配。我无法获得匹配项以触发任何类型的表单验证。现在即使密码不同,它也不会显示密码不匹配。这可能是什么原因?下面是html。Angular JS |角度验证匹配密码

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

回答

2

注:

  1. 您使用同一div NG-如果和NG-节目,这是没有必要的,可以简单到一个简单的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> 

那么你应该得到预期的结果。