我想不出正确的方法来做到这一点,但这是我想要实现的目标:
抽象类引擎
TurboEngine 类扩展引擎
类 RocketEngine 扩展引擎
我有一个角度应用程序,它在很多地方注入“引擎”并使用它的方法来满足业务需求。
我唯一的问题是我必须在每个地方同时注入 TurboEngine 和 RocketEngine 并且有条件地决定调用哪个。
这就是我想要改变的。由于我有一个抽象引擎,我想在我的主要组件中注入一次,然后通过这种方式在我的组件中自动注入。
所以基本上在运行时定义服务的提供者。
这是我尝试过的,但没有奏效:
var injector = ReflectiveInjector.resolveAndCreate([
provide(Engine, {useClass: TurboEngine})
]);
我在它工作的主要组件中完成了它,但是在所有其他地方我都遇到了以下错误:
TurboEngine 没有供应商!(引擎 -> 涡轮引擎)
更新:
我想使用它的方式:
我有
A
注入 Engine 的组件(这就是我要选择实现的地方,因此根据某些条件选择 TurboEngine 或 RocketEngine。然后我有 component
B
,它位于 componentA
的模板中。在这里,当我尝试注入时,Engine
我希望拥有与我在组件中手动创建的相同的实例化对象A