我有基类(没有@Injectable()
装饰器的常规TS类),将在服务(可注入)类中进行扩展。但是问题是-Angular将构造函数参数视为依赖注入。由于基类不可注入,这给了我一个错误。
我想要这样的东西:
class BaseClass {
private param1: OtherBaseClass;
constructor(param1: OtherBaseClass) {
// Extended class should give reference to the injected service
this.param1 = param1;
}
}
@Injectable({ providedIn: 'root' })
class ExtendedBaseClass {
constructor(private extendedOtherBaseClass: ExtendedOtherBaseClass) {
super(extendedOtherBaseClass);
}
}
当然,禁用DI应该只影响基类,而不影响整个应用。
有可能吗?
使基类可注入不是一个选择,因为我将无法覆盖扩展类中的方法。
答案 0 :(得分:0)
好的,看起来我找到了答案。
我可以为基类设置@Injectable()
装饰器,而无需使用{ providedIn: 'root' }
(并且无需将此类添加到模块的提供程序中)。它允许您在基类构造函数中使用注入语法(在扩展类中将被“覆盖”),但是与此同时,被覆盖的方法也将在扩展类中起作用。