在Angular中禁用DI

时间:2018-08-28 08:51:10

标签: angular oop dependency-injection

我有基类(没有@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应该只影响基类,而不影响整个应用。
有可能吗?
使基类可注入不是一个选择,因为我将无法覆盖扩展类中的方法。

1 个答案:

答案 0 :(得分:0)

好的,看起来我找到了答案。
我可以为基类设置@Injectable()装饰器,而无需使用{ providedIn: 'root' }(并且无需将此类添加到模块的提供程序中)。它允许您在基类构造函数中使用注入语法(在扩展类中将被“覆盖”),但是与此同时,被覆盖的方法也将在扩展类中起作用。