Self

From Get docs
< @angular/coreAngular/docs/9/api/core/self


Self

decorator

Parameter decorator to be used on constructor parameters, which tells the DI framework to start dependency resolution from the local injector.

See more...

See also

  • SkipSelf
  • Optional

Description

Resolution works upward through the injector hierarchy, so the children of this class must configure their own providers or be prepared for a null result.

Options

Usage notes

In the following example, the dependency can be resolved by the local injector when instantiating the class itself, but not when instantiating a child.

class Dependency {}

@Injectable()
class NeedsDependency {
  constructor(@Self() public dependency: Dependency) {}
}

let inj = Injector.create({
  providers: [
    {provide: Dependency, deps: []},
    {provide: NeedsDependency, deps: [[../new Self(), Dependency]]}
  ]
});
const nd = inj.get(NeedsDependency);

expect(nd.dependency instanceof Dependency).toBe(true);

const child = Injector.create({
  providers: [{provide: NeedsDependency, deps: [[../new Self(), Dependency]]}],
  parent: inj
});
expect(() => child.get(NeedsDependency)).toThrowError();

© 2010–2020 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://v9.angular.io/api/core/Self