Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度DI(喷油器获取(服务))_Javascript_Angular_Dependency Injection - Fatal编程技术网

Javascript 角度DI(喷油器获取(服务))

Javascript 角度DI(喷油器获取(服务)),javascript,angular,dependency-injection,Javascript,Angular,Dependency Injection,我刚刚开始阅读其他地方的一些代码,我必须理解它。我在Angular网站和其他一些编码相关的网站上读了很多,但我还没有理解下面的部分,需要你的帮助 export class AppComponent { w: FooService; constructor(private injector: Injector) { if (environment.production) { this.w = this.injector.get(FooService); }

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

export class AppComponent {
  w: FooService;
  constructor(private injector: Injector) {
    if (environment.production) {
      this.w = this.injector.get(FooService);
    }
  }
}
我不明白为什么开发人员以这种方式注入FooService,为什么他没有像下面那样实现注入:

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

最后,请您解释一下
this.injector.get()

injector可用于动态(编程)注册或加载服务

检查官方文档中的以下示例

另一个例子是如何手动注册和注入服务测试再次从官方文件

对于喷油器的特定用例,SO中还有另一个答案。具有两种不同实现的Angular服务和使用该服务的某些组件必须为该服务动态选择一种实现。这将是理解引用的条件注入的一个好例子 Beshambher Chaukhwan在评论中


因为他正试图进行有条件注射。只有在环境是生产的情况下,他才会注入这种服务。也许他打算在不同的环境中使用不同的服务,这确实是不必要的,但除非我们了解全部情况,否则我们不能这么说。通常,对于不同的环境,我们有不同的应用程序属性,而不是完全不同的服务。