# Type components in `ng`

Name | Description
--- | ---
angular.Module | Interface for configuring angular modules.
$cacheFactory.Cache | A cache object used to store and retrieve data, primarily used by $http 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 Angular:
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. Angular 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.
select.SelectController | The controller for the `<select>` directive. This provides support for reading and writing the selected value(s) of the control and also coordinates dynamically added `<option>` elements, perhaps by an `ngRepeat` directive.
$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.