我有一个非常大的组件,它与一个服务一起工作,用于加载数据,而不是重写一个类似的组件来处理一个新的服务,我写了一个服务,具有与第一个服务相同的功能,我试图动态地改变服务的注入在组件的构造函数中使用输入。
写入:
@Input() isLocal= false;
private service: Service1|Service2;
constructor(private injector: Injector) {
if (this.isLocal) {
this.service = injector.get(Service1);
} else {
this.service = injector.get(Service2);
}
}
我的问题是我不能在构造函数中访问我的输入,我不能在ngOnInit中init我的服务。我怎样才能做到这一点呢?
最好实现如下所述的工厂模式:
角。Service vs . angular.factory
但是你可以使用Angular core中的Injector类:
import { Injector } from '@angular/core'
...
@Input() isLocal= false;
...
constructor(private injector: Injector){
if(this.isLocal) {
this.oneService = <OneService>this.injector.get(Service1);
} else {
this.twoService = <TwoService>this.injector.get(Service2);
}
}