2016-03-31 13 views
0

Ich habe eine Anweisung erstellt, um das Kennwort zu vergleichen und die Kennwortfelder zu bestätigen und eine Fehlermeldung anzuzeigen, wenn es nicht übereinstimmt.Angularjs ngMessage wird nicht angezeigt

(function() { 
    'use strict'; 
    var compareTo = function() { 
     return { 
      require: "ngModel", 
      scope: { 
       otherModelValue: "=compareTo" 
      }, 
      link: function (scope, element, attributes, ngModel) { 

       ngModel.$validators.compareTo = function (modelValue) { 
        return modelValue == scope.otherModelValue; 
       }; 

       scope.$watch("otherModelValue", function() { 
        ngModel.$validate(); 
       }); 
      } 
     }; 
    }; 
    angular.module('StarterApp').directive("compareTo", compareTo); 

})(); 

Mein HTML:

    <form name="updatePwdForm" novalidate> 
         <md-input-container class="md-block"> 
          <label for="password">Password:</label> 
          <input type="password" name="password" ng-model="ctrl.updatepassword.password" /> 
         </md-input-container> 

         <md-input-container class="md-block"> 
          <label for="confirmPassword">Confirm Password:</label> 
          <input type="password" name="confirmPassword" label="confirmPassword" ng-model="ctrl.updatepassword.confirmpassword" required 
          compare-to="ctrl.updatepassword.password" /> 
          <div ng-messages="updatePwdForm.confirmPassword.$error" style="color:maroon" role="alert"> 
           <div ng-message="required">Password and Confirm Password are not same!</div>         
          </div> 
         </md-input-container> 

         <md-button class="md-raised md-primary" ng-disabled="updatePwdForm.$invalid" ng-click="ctrl.updatePassword()">Update</md-button> 

        </form> 
       </md-content> 

Ich bin sicher, dass meine Richtlinie Werte vergleicht und false zurückgibt, wenn es nicht übereinstimmt, weil meine Taste noch im Sperrmodus ist i richtig ConfirmPassword geben, aber Es zeigt nicht meine ngMessage. vermisse ich etwas? Vielen Dank im Voraus.

Antwort

1

Statt

<div ng-message="required"> 

sollten Sie

<div ng-message="compareTo"> 

haben Da der Name Ihres Validator compareTo ist.

+0

Ehrfürchtig @JB Nizet, Danke. – Venkat