Angular 11:有没有可能从输入中注入service by condition ?



我有一个非常大的组件,它与一个服务一起工作,用于加载数据,而不是重写一个类似的组件来处理一个新的服务,我写了一个服务,具有与第一个服务相同的功能,我试图动态地改变服务的注入在组件的构造函数中使用输入。

写入:

@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);
}
}

相关内容

  • 没有找到相关文章

最新更新