Validations - AngularJS

AngularJS provides great support for implemeting validations in Forms.

Validation is performed by States properties and Validators directives.

There are four States in AngularJS Forms.

  1. $invalid : This state describes that form is in invalid state.
  2. $valid : This state describes that form is in valid state.
  3. $dirty :This state describes that form is in dirty state means any one input control value has changed by user.
  4. $error : This is a javascript object whose properties 'required', 'minlength', 'maxlength' has been set to true when any matching validation is true.

There are main four AngularJS Validators directives.

  1. ng-required : Set input control required and set the 'required' attribute of $error if input control is empty.
  2. ng-minlength : Set minimum length of input field and set the 'minlength' attribute of $error to true if input control does not satisfy the ng-minlength validation.
  3. ng-maxlength : Set maximum length of input field and set the 'maxlength' attribute of $error to true if input control does not satisfy the ng-maxlength validation.
  4. ng-pattern : Match the reqular expression and set the 'pattern' attribute of $error to true if input control does not satisfy the ng-pattern validation.

In addition we used three additional directives:

  • ng-model : Bind input controls to AngularJS controller objects.
  • ng-disabled : Disabled the associated element while condition is satisfied.
  • ng-show : Show the associated element while condition is satisfied else hide the element.


AngularJS Form Validation Example

<html>
<head>
<title>AngularJS Form Validation Example</title>
</head>
<body ng-app="testApp" ng-controller="mainCtrl">
	<form name="myForm" ng-submit="submit()" >
		<p>
			Enter First Name: <input name="firstName" type="textbox" ng-model="user.firstName" ng-required="true" ng-minlength="4" ng-maxlength="8" />
			<span ng-show="myForm.firstName.$error.required">
				Please enter firstName
			</span>
			<span ng-show="myForm.firstName.$error.minlength">
				Please enter minimum characters to 4
			</span>
			<span ng-show="myForm.firstName.$error.maxlength">
				Please enter maximum characters to 8
			</span>
		</p>
		<p>
			Enter Email: <input name="email" type="textbox" ng-model="user.email" ng-required="true" ng-pattern="/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/" />
			<span ng-show="myForm.email.$error.required">
				Email is required.
			</span>
			<span ng-show="myForm.email.$error.pattern">
				Invalid email format
			</span>
		</p>
		<p>
			<input type="submit" value="Submit" ng-disabled="myForm.$invalid" />
		</p>
	</form>
	
	<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js" ></script>
<script>
	var app = angular.module('testApp', []);
	
	app.controller('mainCtrl', ['$scope', function($scope){
		$scope.user = { firstName: '', email: ''};
		
		$scope.submit = function()
		{
			console.log('FirstName: ' + $scope.user.firstName);
			console.log('Email: ' + $scope.user.email);
		};
	}]);
</script>
</body>
</html>

Result:

AngularJS_Forms_Validation_Example_1

AngularJS_Forms_Validation_Example_2

AngularJS_Forms_Validation_Example_3

  • Line 9 defines an input control which has ng-model, ng-required, ng-minlength, ng-maxlength directives.
  • Line 10,13,16 defines a ng-show directives which only visible when its associated bind property is set to true.
  • Line 11, 14, 17 shows error messages which only visible when ng-show directive is set to true.
  • Line 21 shows an example of ng-pattern directive which validate the input control for valid email.
  • LIne 22, 25 span will only be visible when bind properties is set to true.
  • Line 30 defines an input submit button with ng-disabled directive which disable the submit button until the form is in valid state.
  • Line 36 to 46 defines an angular app and controller which show the user information in console when user submit the form.

Join our newsletter and get an occasional email with a technology and DotNetPattern.com news update.