Eu tenho um conjunto de componentes angular2 que devem receber algum serviço injetado. Meu primeiro pensamento foi que seria melhor criar uma superclasse e injetar o serviço lá. Qualquer um dos meus componentes estenderia essa superclasse, mas essa abordagem não funciona.
Exemplo simplificado:
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
}
}
Eu poderia resolver isso injetando MyService
dentro de cada componente e usar esse argumento para a super()
chamada, mas isso é definitivamente algum tipo de absurdo.
Como organizar meus componentes corretamente para que herdem um serviço da superclasse?
new MyService()
vez de injetar dá exatamente o mesmo resultado (exceto mais eficiente). Se você deseja compartilhar a mesma instância de serviço entre diferentes serviços e / ou componentes, isso não funcionará. Cada classe receberá outra MyService
instância.
myService
. Encontrou uma solução que evita isso, mas adiciona mais código às classes derivadas ...