代码之家  ›  专栏  ›  技术社区  ›  Giacomo Voß

使用injector.get而不是构造函数注入

  •  0
  • Giacomo Voß  · 技术社区  · 7 年前

    这样做有什么坏处吗

    constructor(public injector: Injector) {}
    
    foo() {
      this.injector.get(SomeService).doStuff();
    }
    

    而不是这个

    constructor(public service: SomeService) {}
    
    foo() {
      this.service.doStuff();
    }
    

    除了可读性?

    我有一个相当复杂的组件相互扩展的层次结构,我想避免每次都要扩展构造函数,比如4或5个注入的服务。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Suren Srapyan    7 年前

    这些方法没有区别,但是每次你这样做的时候 get 在注入器上,运行一个函数,该函数必须找到您提供的服务。你可以打电话 得到 一次并将服务的引用保存在属性中

    constructor(public injector: Injector) {
        this.someService = this.injector.get(SomeService);
    }
    

    但是我认为在构造函数中注入精确的服务而不是 Injector 更具可读性。

    推荐文章