Dart Documentationdi.moduleModule

Module class

A collection of type bindings. Once the module is passed into the injector, the injector creates a copy of the module and all subsequent changes to the module have no effect.

class Module {
 final Map<Type, Binding> _bindings = new HashMap<Type, Binding>();
 final List<Module> _childModules = <Module>[];

 /**
  * Compiles and returs bindings map by performing depth-first traversal of the
  * child (installed) modules.
  */
 Map<Type, Binding> get bindings {
   Map<Type, Binding> res = new HashMap<Type, Binding>();
   _childModules.forEach((child) => res.addAll(child.bindings));
   res.addAll(_bindings);
   return res;
 }

 /**
  * Register binding to a concrete value.
  *
  * The [value] is what actually will be injected.
  */
 void value(Type id, value,
     {CreationStrategy creation, Visibility visibility}) {
   _bindings[id] = new ValueBinding(value, creation, visibility);
 }

 /**
  * Register binding to a [Type].
  *
  * The [implementedBy] will be instantiated using [new] operator and the
  * resulting instance will be injected. If no type is provided, then it's
  * implied that [id] should be instantiated.
  */
 void type(Type id, {Type implementedBy, CreationStrategy creation,
     Visibility visibility}) {
   _bindings[id] = new TypeBinding(implementedBy == null ? id : implementedBy,
       creation, visibility);
 }

 /**
  * Register binding to a factory function.abstract
  *
  * The [factoryFn] will be called and all its arguments will get injected.
  * The result of that function is the value that will be injected.
  */
 void factory(Type id, FactoryFn factoryFn,
     {CreationStrategy creation, Visibility visibility}) {
   _bindings[id] = new FactoryBinding(factoryFn, creation, visibility);
 }

 /**
  * Installs another module into this module. Bindings defined on this module
  * take precidence over the installed module.
  */
 void install(Module module) => _childModules.add(module);
}

Subclasses

AngularMockModule, AngularModule, NgCoreDomModule, NgCoreModule, NgDirectiveModule, NgFilterModule, NgPerfModule

Properties

final Map<Type, Binding> bindings #

Compiles and returs bindings map by performing depth-first traversal of the child (installed) modules.

Map<Type, Binding> get bindings {
 Map<Type, Binding> res = new HashMap<Type, Binding>();
 _childModules.forEach((child) => res.addAll(child.bindings));
 res.addAll(_bindings);
 return res;
}

Methods

void factory(Type id, FactoryFn factoryFn, {CreationStrategy creation, Visibility visibility}) #

Register binding to a factory function.abstract

The factoryFn will be called and all its arguments will get injected. The result of that function is the value that will be injected.

void factory(Type id, FactoryFn factoryFn,
   {CreationStrategy creation, Visibility visibility}) {
 _bindings[id] = new FactoryBinding(factoryFn, creation, visibility);
}

void install(Module module) #

Installs another module into this module. Bindings defined on this module take precidence over the installed module.

void install(Module module) => _childModules.add(module);

void type(Type id, {Type implementedBy, CreationStrategy creation, Visibility visibility}) #

Register binding to a Type.

The implementedBy will be instantiated using new operator and the resulting instance will be injected. If no type is provided, then it's implied that id should be instantiated.

void type(Type id, {Type implementedBy, CreationStrategy creation,
   Visibility visibility}) {
 _bindings[id] = new TypeBinding(implementedBy == null ? id : implementedBy,
     creation, visibility);
}

void value(Type id, value, {CreationStrategy creation, Visibility visibility}) #

Register binding to a concrete value.

The value is what actually will be injected.

void value(Type id, value,
   {CreationStrategy creation, Visibility visibility}) {
 _bindings[id] = new ValueBinding(value, creation, visibility);
}