【发布时间】:2023-03-04 10:11:01
【问题描述】:
我有一个相当大的 Angular2 应用程序,其中包含智能组件和哑组件,其中所有智能组件都连接到消息总线:
class SomeSmartComponent {
constructor(private messageBuss: MessageBuss) {}
}
这是非常重复的,我希望有:
class SomeSmartComponent extends SmartComponent {
constructor()
}
即。将公共依赖项移动到父类中。我尝试了以下方法:
class SmartComponent {
protected messageBuss: MessageBuss
constructor() {
let injector: Injector = Injector.resolveAndCreate([MessageBuss])
this.messageBuss = injector.get(MessageBuss)
}
}
问题是创建了一个新的 Injector 和一个新的 MessageBuss,我需要由根注入器创建并注入到服务层的相同 MessageBuss。
换句话说,我需要访问由根注入器创建的单例 MessageBuss,而无需在构造函数中设置它。任何帮助将不胜感激。
【问题讨论】:
-
假设 Injector 工作正常,直接使用 DI(在构造函数中注入)看起来会更好,就像我们应该使用 ng2 一样。
-
这样做的目的是避免重复使用 50 多个组件,这些组件都在其构造函数中显式注入相同的依赖项,并且都具有围绕该依赖项的共同功能。我查看了注入 Injector,但结果是相同的重复次数。