# Type components in `ng`

Name | Description
--- | ---
angular.Module | Interface for configuring AngularJS modules.
$cacheFactory.Cache | A cache object used to store and retrieve data, primarily used by $templateRequest and the script directive to cache templates and other data.
$compile.directive.Attributes | A shared object between directive compile / linking functions which contains normalized DOM element attributes. The values reflect current binding state `{{ }}`. The normalization is needed since all of these are treated as equivalent in AngularJS:
form.FormController | `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.

ngModel.NgModelController

`NgModelController` provides API for the `ngModel` directive. The controller contains services for data-binding, validation, CSS updates, and value formatting and parsing. It purposefully does not contain any logic which deals with DOM rendering or listening to DOM events. Such DOM related logic should be provided by other directives which make use of `NgModelController` for data-binding to control elements. AngularJS provides this DOM logic for most `input` elements. At the end of this page you can find a custom control example that uses `ngModelController` to bind to `contenteditable` elements.

ModelOptions | A container for the options set by the `ngModelOptions` directive
select.SelectController | The controller for the select directive. The controller exposes a few utility methods that can be used to augment the behavior of a regular or an ngOptions select element.
$rootScope.Scope | A root scope can be retrieved using the $rootScope key from the $injector. Child scopes are created using the $new() method. (Most scopes are created automatically when compiled HTML template is executed.) See also the Scopes guide for an in-depth introduction and usage examples.