Angular 2:如何在Base Component中进行构造函数注入?

时间:2018-01-17 12:02:04

标签: angular inheritance dependency-injection

我目前的解决方案是:

export class BaseComponent {
  constructor(public myService: MyService) {}
}

export class ChildComponent extends BaseComponent {
  constructor(public myServiceRenamed: MyService) {
    super(myServiceRenamed);
  }
}

在ChildComponent中不需要MyService,理想情况下我只想在BaseComponent的构造函数中声明它,但是我需要在super()调用中发送null,遗憾的是服务没有定义。

有可能实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

你不能。

您必须在某个时间注入您的依赖项。

由于您无法创建基本组件的实例,因此您无法做到这一点。

可以做什么是创建一个强制组件具有此依赖关系的界面。您仍然需要注入依赖项,但至少您知道实现您的接口的evey类将具有此必需的依赖项。

也许你可以为此做一个装饰,但是我不太了解那个帮助你,对不起:/