实际上,我想实施某种策略模式。更准确地说,我想在运行时决定要实例化哪个类。
这当然很简单。
if(...) {
this.service = new ServiceA();
} else {
this.service = new ServiceB();
}
但是,如果ServiceA和ServiceB在其类中使用依赖项注入该怎么办?我必须传递这些实例,还是有更好的方法让Nest自动注入它们?
答案 0 :(得分:2)
您可以同时注入这两种服务,然后将它们动态分配给变量:
service: Service;
constructor(private serviceA: ServiceA, private serviceB: ServiceB) {}
dynamicMethod() {
if (...) {
this.service = this.serviceA;
} else {
this.service = this.serviceB;
}
}