diff --git a/src/directive/input.js b/src/directive/input.js index 631e3a367d2a..2e1c7ffff7f2 100644 --- a/src/directive/input.js +++ b/src/directive/input.js @@ -800,22 +800,21 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', 'ngModel', '$e if (isValid) { if ($error[validationErrorKey]) invalidCount--; - $error[validationErrorKey] = false; - toggleValidCss(isValid); if (!invalidCount) { - toggleValidCss(isValid, validationErrorKey); + toggleValidCss(true); this.$valid = true; this.$invalid = false; } } else { - if (!$error[validationErrorKey]) invalidCount++; - $error[validationErrorKey] = true; - toggleValidCss(isValid) - toggleValidCss(isValid, validationErrorKey); + toggleValidCss(false) this.$invalid = true; this.$valid = false; + invalidCount++; } + $error[validationErrorKey] = !isValid; + toggleValidCss(isValid, validationErrorKey); + parentForm.$setValidity(validationErrorKey, isValid, this); }; diff --git a/test/directive/inputSpec.js b/test/directive/inputSpec.js index ad1670f9f1b2..2a7244c9f68f 100644 --- a/test/directive/inputSpec.js +++ b/test/directive/inputSpec.js @@ -269,6 +269,15 @@ describe('ng-model', function() { dealoc(element); })); + + + it('should set invalid classes on init', inject(function($compile, $rootScope) { + var element = $compile('')($rootScope); + $rootScope.$digest(); + + expect(element).toBeInvalid(); + expect(element).toHaveClass('ng-invalid-required'); + })); });