javascript - Angular DI (injector.get(FooService))

标签 javascript angular dependency-injection

我刚开始从其他地方阅读一些代码,我必须理解它。我在 Angular 网站和其他一些与编码相关的网站上阅读了很多内容,但我还没有理解以下部分,需要您的帮助。

export class AppComponent {
  w: FooService;
  constructor(private injector: Injector) {
    if (environment.production) {
      this.w = this.injector.get(FooService);
    }
  }
}

我不明白开发者为什么要这样注入(inject)FooService,为什么不像下面这样实现注入(inject):

export class AppComponent {
  constructor(w: FooService) {
  }
}

最后,请您解释一下 this.injector.get() 的主要目标吗?

最佳答案

注入(inject)器可用于动态(编程)注册或加载服务。

从官方文档中查看以下示例

Angular Injection Token doc

还有另一个示例,说明如何从官方文档中再次手动注册并在测试中注入(inject)服务

Angular Manually Inject Service

SO 中还有另一个答案,其中包含注入(inject)器的特定用例。具有 2 个不同实现的 Angular 服务和使用该服务的某些组件必须为该服务动态选择一个实现。这将是理解从中引用的条件注入(inject)的一个很好的例子 Beshambher Chaukhwan 在评论中。

another relevant answer in SO

关于javascript - Angular DI (injector.get(FooService)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67043949/

相关文章:

css - Angular Material Mat-基于最长选项宽度选择宽度

java - 如何用spring高效的实现一个策略模式?

javascript - 使用 ts-node-dev 运行一个简单的 express 应用程序并得到错误 : False expression: Non-string value passed to `ts.resolveTypeReferenceDirective`

javascript - UI GRID - 自定义单元格模板代码分离

javascript - Java中的可选参数

javascript - 禁止在 eslint 中批量导出(export * from)

angular - "Type ' 对象 ' is not assignable to type"带有新的 HttpClient/HttpGetModule

javascript - Angular 6 - 在依赖注入(inject)之前使用异步调用初始化服务

c# - System.Configuration.Configuration 需要对象引用

dependency-injection - 在 ASP.NET 中使用 Unity.WebForms