Tutorials References Menu

AngularJS input Directive


Example

An input field with data-binding:

<input ng-model="myInput">

<p>The value of the input field is:</p>
<h1>{{myInput}}</h1>
Try it Yourself »

Definition and Usage

AngularJS modifies the default behavior of <input> elements, but only if the ng-model attribute is present.

They provide data-binding, which means they are part of the AngularJS model, and can be referred to, and updated, both in AngularJS functions and in the DOM.

They provide validation. Example: an <input> element with a required attribute, has the $valid state set to false as long as it is empty.

They also provide state control. AngularJS holds the current state of all input elements.

Input fields have the following states:

  • $untouched The field has not been touched yet
  • $touched The field has been touched
  • $pristine The field has not been modified yet
  • $dirty The field has been modified
  • $invalid The field content is not valid
  • $valid The field content is valid

The value of each state represents a Boolean value, and is either true or false.


Syntax

<input ng-model="name">

Input elements are being referred to by using the value of the ng-model attribute.



CSS Classes

<input> elements inside an AngularJS application are given certain classes. These classes can be used to style input elements according to their state.

The following classes are added:

  • ng-untouched The field has not been touched yet
  • ng-touched The field has been touched
  • ng-pristine The field has not been  modified yet
  • ng-dirty The field has been modified
  • ng-valid The field content is valid
  • ng-invalid The field content is not valid
  • ng-valid-key One key for each validation. Example: ng-valid-required, useful when there are more than one thing that must be validated
  • ng-invalid-key Example: ng-invalid-required

The classes are removed if the value they represent is false.

Example

Apply styles for valid and invalid input elements, using standard CSS:

<style>
input.ng-invalid {
    background-color: pink;
}
input.ng-valid {
    background-color: lightgreen;
}
</style>
Try it Yourself »