继承和依赖注入

2023-11-29

我有一组 Angular2 组件,它们都应该注入一些服务。我的第一个想法是最好创建一个超级类并在那里注入服务。然后我的任何组件都会扩展该超类,但这种方法不起作用。

简化示例:

export class AbstractComponent {
  constructor(private myservice: MyService) {
    // Inject the service I need for all components
  }
}

export MyComponent extends AbstractComponent {
  constructor(private anotherService: AnotherService) {
    super(); // This gives an error as super constructor needs an argument
  }
}

我可以通过注入来解决这个问题MyService在每个组件中并使用该参数super()打电话但这绝对是某种荒谬的。

如何正确组织我的组件,以便它们从超类继承服务?


我可以通过在每个组件中注入 MyService 并使用该参数来调用 super() 来解决这个问题,但这绝对是荒谬的。

这并不荒谬。这就是构造函数和构造函数注入的工作原理。

每个可注入类都必须将依赖项声明为构造函数参数,如果超类也有依赖项,则这些依赖项也需要在子类的构造函数中列出,并使用super(dep1, dep2) call.

传递注入器并强制获取依赖项具有严重的缺点。

它隐藏了依赖关系,这使得代码更难阅读。
它违反了熟悉 Angular2 DI 工作原理的人的期望。
它打破了生成静态代码的离线编译来取代声明式和命令式 DI,从而提高性能并减少代码大小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

继承和依赖注入 的相关文章

随机推荐