diff --git a/match.js b/match.js
index <HASH>..<HASH> 100644
--- a/match.js
+++ b/match.js
@@ -7,12 +7,12 @@
                 match: '='
             },
             link: function(scope, elem, attrs, ctrl) {
-                scope.$watch(function() {
-                    modelValue = ctrl.$modelValue || ctrl.$$invalidModelValue;
-                    return (ctrl.$pristine && angular.isUndefined(modelValue)) || scope.match === modelValue;
-                }, function(currentValue) {
-                    ctrl.$setValidity('match', currentValue);
+                scope.$watch('match', function(pass){
+                    ctrl.$validate();
                 });
+                ctrl.$validators.match = function(modelValue){
+                    return (ctrl.$pristine && (angular.isUndefined(modelValue) ||  || modelValue === "")) || modelValue === scope.match;
+                };
             }
         };
     });
Fix: for AngularJS <I>.x

Using the new `$validators` pipeline for validation.