看起来使用$setValidity可能不是这里的方法。我发现这个问题提出了一个不同的解决方案,使用$ validators和$ validate(),这对我来说非常有用。新代码如下所示:
directive('match', function () {
return {
require: 'ngModel',
restrict: 'A',
scope: {
match: '='
},
link: function(scope, elem, attrs, ngModel) {
scope.$watch('match', function(pass){
ngModel.$validate();
});
ngModel.$validators.match = function(modelValue, viewValue){
var value = modelValue || viewValue;
var match = scope.match;
return value === match;
};
}
};
});