我有一组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
实例。
myService
。找到了避免这种情况的解决方案,但向派生类添加了更多代码...