我有这样的结构
@Injectable()
export class A extends B ...
@Injectable()
export class C extends B ...
@Component({})
constructor(
@Inject(SERVICE) public data // How to inject component
) {
}
我必须将服务A或C动态注入到组件中
答案 0 :(得分:0)
我想注入扩展
的特定实现B
在这种情况下,您只需要指定类型。这可以从参数类型推断出来,也可以在@Inject
constructor(private myService: C) { }
或
constructor(@Inject(C) private myService: B) { }
答案 1 :(得分:-2)
尝试使用这种有角度的 reflectiveInjector https://angular.io/api/core/ReflectiveInjector
这将有助于动态获得服务。
注意::不推荐使用:从 v5 起-速度慢,并且引入了大量代码,请改用Injector.create
。
Injector替代了新的运算符,该运算符可以自动解决构造函数的依赖关系。
通常情况下,应用程序代码会在 构造函数,它们由注入器解析。
尝试新的Injector
:
import { Injector } from '@angular/core';
const injector = Injector.create([
{
provide: ASerive,
useClass: ASerive,
deps: [specify if any dependency]
}
]);
const gotMySerive = injector.get(ASerive);
根据需要更改创建数据