Angular2:基类中的公共依赖项

时间:2016-03-25 15:21:52

标签: angular angular2-services

我有一个相当大的Angular2应用程序,其中包含智能和愚蠢的组件,其中所有智能组件都连接到消息传递总线:

class SomeSmartComponent {
  constructor(private messageBuss: MessageBuss) {}
}

这是非常重复的,我更愿意:

class SomeSmartComponent extends SmartComponent {
  constructor()
}

IE中。将公共依赖项移动到父类。我尝试过以下方法:

class SmartComponent {
  protected messageBuss: MessageBuss

  constructor() {
    let injector: Injector = Injector.resolveAndCreate([MessageBuss])
    this.messageBuss = injector.get(MessageBuss)
  }
}

问题是创建一个新的Injector和一个新的MessageBuss,我需要由根注入器创建并注入服务层的相同MessageBuss。

换句话说,我需要访问由根注入器创建的单件MessageBuss,而不必在构造函数中设置它。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您至少需要注入Injector

class SmartComponent {
  protected messageBuss: MessageBuss

  constructor(injector:Injector) {
    this.messageBuss = injector.get(MessageBuss)
  }
}

class SomeSmartComponent extends SmartComponent {
  constructor(injector:Injector) {
    super.injector;
  }
}