p.location-badge.
exported from angular2/di
defined in angular2/src/di/injector.ts (line 370)
:markdown
A dependency injection container used for resolving dependencies.
An `Injector` is a replacement for a `new` operator, which can automatically resolve the
constructor dependencies.
In typical use, application code asks for the dependencies in the constructor and they are
resolved by the `Injector`.
## Example:
Suppose that we want to inject an `Engine` into class `Car`, we would define it like this:
```javascript
class Engine {
}
class Car {
constructor(@Inject(Engine) engine) {
}
}
```
Next we need to write the code that creates and instantiates the `Injector`. We then ask for the
`root` object, `Car`, so that the `Injector` can recursively build all of that object's
dependencies.
```javascript
main() {
var injector = Injector.resolveAndCreate([Car, Engine]);
// Get a reference to the `root` object, which will recursively instantiate the tree.
var car = injector.get(Car);
}
```
Notice that we don't use the `new` operator because we explicitly want to have the `Injector`
resolve all of the object's dependencies automatically.
.l-main-section
h2 Members
.l-sub-section
h3 constructor
pre.prettyprint
code.
constructor(_proto: ProtoInjector, _parent?: Injector, _depProvider?: DependencyProvider, _debugContext?: Function)
:markdown
.l-sub-section
h3 debugContext
pre.prettyprint
code.
debugContext()
:markdown
Returns debug information about the injector.
This information is included into exceptions thrown by the injector.
.l-sub-section
h3 get
pre.prettyprint
code.
get(token: any)
:markdown
Retrieves an instance from the injector.
.l-sub-section
h3 getOptional
pre.prettyprint
code.
getOptional(token: any)
:markdown
Retrieves an instance from the injector.
.l-sub-section
h3 getAt
pre.prettyprint
code.
getAt(index: number)
:markdown
Retrieves an instance from the injector.
.l-sub-section
h3 parent
:markdown
Direct parent of this injector.
.l-sub-section
h3 internalStrategy
:markdown
Internal. Do not use.
We return `any` not to export the InjectorStrategy type.
.l-sub-section
h3 resolveAndCreateChild
pre.prettyprint
code.
resolveAndCreateChild(bindings: List<Type | Binding | List<any>>, depProvider?: DependencyProvider)
:markdown
Creates a child injector and loads a new set of bindings into it.
A resolution is a process of flattening multiple nested lists and converting individual
bindings into a list of ResolvedBinding
s. The resolution can be cached by `resolve`
for the Injector
for performance-sensitive code.
.l-sub-section
h3 createChildFromResolved
pre.prettyprint
code.
createChildFromResolved(bindings: List<ResolvedBinding>, depProvider?: DependencyProvider)
:markdown
Creates a child injector and loads a new set of ResolvedBinding
s into it.
.l-sub-section
h3 displayName
:markdown
.l-sub-section
h3 toString
pre.prettyprint
code.
toString()
:markdown