我需要动态创建服务实例并将其分配给某些对象。所有这些都是在运行时根据用户操作发生的 这就是我想要实现的,或多或少:
testComponent.ts
@Input() serviceType: any;
// Injector is provide by the upper component
constructor(injector: Injector) {
super();
// testComponent knows nothing about fooService (only provided injector does)
// Could be a string or an object
this.serviceInstance = injector.get(this.serviceType);
// It is now able to use a fooService method
this.serviceInstance.getData().subscribe((data)=>{
console.log(data);
});
}
fooService.ts
// common method exposed by all services
public getData() {
// does something
}
这是正确的方法吗? 如果在任何地方都没有提供所需的服务并且必须动态导入该怎么办?
答案 0 :(得分:0)
绝对可以做到这一点,您只需要在适当的NgModule中为该服务注册第二个提供程序即可
@NgModule( {
imports: [
],
providers: [
AppUserApiService,
{ provide: 'AppUserApiService', useExisting: AppUserApiService },
]
}