Когда вы вводите в форму, она обновляет состояние своих элементов управления (коснулся, загрязнен и т. Д.). В соответствии с тем, как вы определяете свои валидаторы полей (обязательно, minLength ...), форма будет действительной или нет после ввода пользователя.
В вашем методе отправки вам не следует продолжать, если какие-либо поля формы недопустимы. См. AngularJS Developer Guide - Forms или Scotch Tutorials - AngularJS Form Validation , вы можете получить более подробную информацию о проверке AngularJS.
Как уже упоминал Майк, вы можете использовать ngClass условно (см. ниже), чтобы применять некоторые классы стилей только в случае возникновения логического условия, например, форма недопустима.
<div ng-controller="ExampleController">
<form name="form" novalidate class="css-form">
<input type="text" ng-model="user.name" name="username" ng-class="{ 'error': !isValid }"/>
<div ng-show="form.$submitted>
<span ng-show="form.username.$error">Wrong Name</span></span>
</div>
<button ng-click="submit(user)"> Submit </button>
</form>
</div>
angular.module('formExample', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.isValid = true;
$scope.submit= function(user) {
if (user.name != 'Carl') {
$scope.isValid = false;
}
};
}]);
При необходимости вы всегда можете программно изменить состояния формы. Например, чтобы установить для поля нетронутое значение:
$scope.form.$setPristine();
$scope.form.$setUntouched();
$ setPristine устанавливает для $ нетронутого состояния формы значение true, для $ dirty состояния значение false, удаляет ng-dirtyкласс и добавляет нг-нетронутый класс.
Кроме того, он устанавливает для $ представленного состояния значение false. Этот метод также распространяется на все элементы управления, содержащиеся в этой форме.
$ setUntouched устанавливает форму в ее нетронутом состоянии.
Этот метод может быть вызван для удаления класса 'ng-touched' и установки элементов управления формы в их нетронутое состояние (класс ng-untouched). Возвращение элементов управления формы в их нетронутое состояние часто полезно при возвращении формы в первоначальное состояние.
ОБНОВЛЕНИЕ
Теперь ясно, чего вы пытаетесь достичь. Два вышеописанных метода могут использоваться для установки состояния формы, но если вы хотите проверить его из кода (это можно сделать, передав форму в службу или, например, непосредственно в контроллер), тогда метод $validate()
позволит вамдобиться этого, как упомянуто Джорджем.