У меня есть набор угловых компонентов, которые должны получить некоторые инъекции. Моя первая мысль заключалась в том, что было бы лучше создать суперкласс и ввести там службу. Любой из моих компонентов затем расширит этот суперкласс, но этот подход не сработает.Наследование наследования и зависимостей
Упрощенный пример:
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()
вызова, но это определенно какой-то абсурд.
Как правильно организовать мои компоненты, чтобы они наследовали сервис из суперкласса?
Это не дубликат. Вопрос, на который делается ссылка, - это о том, как создать класс DERIVED, который может использовать службу, введенную уже определенным суперклассом. Мой вопрос заключается в том, как построить класс SUPER, который наследует службу к производным классам. Это просто наоборот. – maxhb
Ваш ответ (встроенный в ваш вопрос) не имеет для меня смысла. Таким образом, вы создаете инжектор, который не зависит от углового использования форсунки для вашего приложения. Использование 'new MyService()' вместо инъекции дает вам точно такой же результат (кроме более эффективного). Если вы хотите разделить один и тот же экземпляр службы между различными службами и/или компонентами, это не сработает. Каждый класс получит другой экземпляр «MyService». –
Вы совершенно правы, мой код будет генерировать множество экземпляров 'myService'. Нашел решение, которое позволяет избежать этого, но добавляет больше кода к производным классам ... – maxhb