<h1><code ng:non-bindable="">FormController</code>
<span class="hint">(type in module <code ng:non-bindable="">ng</code>
)</span>
</h1>
<div><h2 id="Description">Description</h2>
<div class="description"><p><code>FormController</code> keeps track of all its controls and nested forms as well as state of them,
such as being valid/invalid or dirty/pristine.</p>

<p>Each <a href="api/angular.module.ng.$compileProvider.directive.form"><code>form</code></a> directive creates an instance
of <code>FormController</code>.</p></div>
<div class="member property"><h2 id="Properties">Properties</h2>
<ul class="properties"><li><h3 id="$pristine">$pristine</h3>
<div class="$pristine"><p>True if user has not interacted with the form yet.</p></div>
</li>
<li><h3 id="$dirty">$dirty</h3>
<div class="$dirty"><p>True if user has already interacted with the form.</p></div>
</li>
<li><h3 id="$valid">$valid</h3>
<div class="$valid"><p>True if all of the containg forms and controls are valid.</p></div>
</li>
<li><h3 id="$invalid">$invalid</h3>
<div class="$invalid"><p>True if at least one containing control or form is invalid.</p></div>
</li>
<li><h3 id="$error">$error</h3>
<div class="$error"><p>Is an object hash, containing references to all invalid controls or
forms, where:</p>

<ul>
<li>keys are validation tokens (error names) — such as <code>REQUIRED</code>, <code>URL</code> or <code>EMAIL</code>),</li>
<li>values are arrays of controls or forms that are invalid with given error.</li>
</ul></div>
</li>
</ul>
</div>
</div>
