我有一组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()
调用的参数来解决这个问题,但这绝对是一种荒谬的方法。
如何正确组织我的组件,以便它们从超类继承一个服务?
new MyService()
而不是注入,则可以获得完全相同的结果(除了更高效外)。如果你想要在不同服务和/或组件之间共享同一服务实例,这种方法将行不通。每个类都将获得另一个MyService
实例。 - Günter ZöchbauermyService
实例。我找到了一个避免这种情况但需要在派生类中添加更多代码的解决方案... - maxhb