Improve this Doc View Source

`FormController` keeps track of all its controls and nested forms as well as the state of them, such as being valid/invalid or dirty/pristine.

Each form directive creates an instance of `FormController`.

## Methods

- ###

  `$addControl();`

  Register a control with the form.

  Input elements using ngModelController do this automatically when they are linked.

- ###

  `$removeControl();`

  Deregister a control from the form.

  Input elements using ngModelController do this automatically when they are destroyed.

- ###

  `$setValidity();`

  Sets the validity of a form control.

  This method will also propagate to parent forms.

- ###

  `$setDirty();`

  Sets the form to a dirty state.

  This method can be called to add the 'ng-dirty' class and set the form to a dirty state (ng-dirty class). This method will also propagate to parent forms.

- ###

  `$setPristine();`

  Sets the form to its pristine state.

  This method can be called to remove the 'ng-dirty' class and set the form to its pristine state (ng-pristine class). This method will also propagate to all the controls contained in this form.

  Setting a form back to a pristine state is often useful when we want to 'reuse' a form after saving or resetting it.

## Properties

- ### `$pristine`

  boolean | True if user has not interacted with the form yet.

- ### `$dirty`

  boolean | True if user has already interacted with the form.

- ### `$valid`

  boolean | True if all of the containing forms and controls are valid.

- ### `$invalid`

  boolean | True if at least one containing control or form is invalid.

- ### `$error`

  Object | Is an object hash, containing references to all invalid controls or forms, where: keys are validation tokens (error names), values are arrays of controls or forms that are invalid for given error name. Built-in validation tokens: `email` `max` `maxlength` `min` `minlength` `number` `pattern` `required` `url`