2016-07-13 2 views
0

Versucht, Angular Auto Validate's Kennwortübereinstimmungs-/Bestätigungsbeispiel in ein Formular zu integrieren. Ich bekomme keine Fehler, aber der Passwort-Übereinstimmungscode tritt nicht ein. Was ist der einfachste Weg, um das zu beheben? Was mache ich falsch?Probleme mit dem Kennwortabgleich mit Angular Auto Validate

Here's a plunkr of my code

Hier ist das Passwort passenden Code, den ich zu integrieren bin versucht:

function ConfirmPasswordValidatorDirective(defaultErrorMessageResolver) { 
    defaultErrorMessageResolver.getErrorMessages().then(function (errorMessages) { 
     errorMessages['confirmPassword'] = 'Please ensure the passwords match.'; 
    }); 

    return { 
     restrict : 'A', 
     require : 'ngModel', 
     scope : { 
      confirmPassword : '=confirmPassword' 
     }, 
     link : function(scope, element, attributes, ngModel) { 
      ngModel.$validators.confirmPassword = function(modelValue) { 
       return modelValue === scope.confirmPassword; 
      }; 

      scope.$watch('confirmPassword', function() { 
       ngModel.$validate(); 
      }); 
     } 
    }; 
} 

ConfirmPasswordValidatorDirective.$inject = [ 
    'defaultErrorMessageResolver' 
]; 

Here's a plunkr Winkel-Auto-Validate-Passwort passenden Code zu arbeiten.

+0

Es gibt eine Menge von Posts/Ready-Anweisungen, um dies zu tun, schauen Sie dies zum Beispiel: http://StackOverflow.com/Questions/14012239/Password-Check-Directive-in-angularjs – developer033

+0

Vielen Dank, ich don ' t fühlen, dass die spezifischen Probleme in der obigen Post mit Angular Auto Validate behandelt. –

+0

Stimmt, ich habe nicht bemerkt, dass Sie ein Modul verwenden, da Sie es nicht ausdrücklich genannt haben. – developer033

Antwort

1

Nun, zunächst vergessen haben, die Richtlinie Ihrer Ansicht nach nennen, so sollten Sie es in Ihrem ConfirmPassword<input> umfassen:

confirm-password="formModel.password" 

Auch haben Sie die Richtlinie nicht in Ihrem erklärt JS Datei:

app.directive('confirmPassword', ConfirmPasswordValidatorDirective); 

Look: DEMO

+0

Vielen Dank fantastisch. "Siehe,' Umfang: { ConfirmPassword: '= ConfirmPassword' } 'wurde in der ConfirmPassword' ' Nur eine Frage, damit ich verstehe nicht wider: warum hast du entfernen' class =" Ah Steuer- Label "' auf den Passwort-Etiketten? –

+0

Hmm, vielleicht kopierte ich die Felder ihrer PLNKR :), aber Sie können nur diese Änderungen oben auf ** Ihre ** PLNKR tun und es funktioniert. – developer033

+0

Vielen Dank. . –