Injectable
decorator
Decorator that marks a class as available to be provided and injected as a dependency.
providedIn
Type<any> | "root" | "platform" | "any" | null | undefined
Determines which injectors will provide the injectable.
Type<any>
- associates the injectable with an@NgModule
or otherInjectorType
. This option is DEPRECATED.- 'null' : Equivalent to
undefined
. The injectable is not provided in any scope automatically and must be added to aproviders
array of an @NgModule, @Component or @Directive.
The following options specify that this injectable should be provided in one of the following injectors:
- 'root' : The application-level injector in most apps.
- 'platform' : A special singleton platform injector shared by all applications on the page.
- 'any' : Provides a unique instance in each lazy loaded module while all eagerly loaded modules share one instance. This option is DEPRECATED.
Usage Notes
Marking a class with @Injectable
ensures that the compiler
will generate the necessary metadata to create the class's
dependencies when the class is injected.
The following example shows how a service class is properly marked so that a supporting service can be injected upon creation.
@Injectable() class UsefulService {} @Injectable() class NeedsService { constructor(public service: UsefulService) {} } const injector = Injector.create({ providers: [ {provide: NeedsService, deps: [UsefulService]}, {provide: UsefulService, deps: []}, ], }); expect(injector.get(NeedsService).service instanceof UsefulService).toBe(true);
Jump to details