Javascript Angular JS | Angular验证匹配密码

Javascript Angular JS | Angular验证匹配密码,javascript,angularjs,forms,validation,match,Javascript,Angularjs,Forms,Validation,Match,我正在尝试使用来自的角度验证匹配。我无法触发匹配项以导致任何类型的表单验证。现在,即使密码不同,也不会显示密码不匹配。这可能是什么原因?下面是html <form name="vm.changeForm" ng-submit="vm.changeForm.$valid && vm.attemptChange(password);" > <md-input-container class="md-block">

我正在尝试使用来自的角度验证匹配。我无法触发匹配项以导致任何类型的表单验证。现在,即使密码不同,也不会显示密码不匹配。这可能是什么原因?下面是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>

请输入密码。
密码不匹配

注意:

  • 您在同一个
    div
    上使用ng if和ng show,这是不必要的,您可以简单地转换为一个简单的
    ng if

  • 您必须使用
    name
    属性,而不是
    ng模型

  • 因此,由于您的
    输入
    名称为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>