Я хотел бы знать, как внедрить службу с несколькими зависимостями в абстрактный класс, который будет расширен несколькими классами.
Более эффективным способом, чем передать его во все конструкторы!
Я пытаюсь создать статический, но если другой экземпляр никогда не создаст другой сервис, переменной экземпляра синглтона никогда не будет назначен
Примерно так: (это просто пример)
@Injectable({
providedIn: 'root'
})
export class AnimalService {
constructor(private http: HttpClient, private userService: UserService) {}
countTotalInDB(type): number {
return this.http.get(...);
}
getUserAnimals(userId: number) {
return this.userService.getUser(userId).animals;
}
}
abstract class Animal {
constructor() {}
public getTotalInDataBase(type): number {
// How to get a instance of AnimalService ?
return animalService.countTotalInDB(type);
}
}
export class Cat extends Animal {
constructor() {
super();
}
public getTotalInDataBase(): number {
return super.getTotalInDataBase('cat');
}
}
export class Dog extends Animal {
constructor() {
super();
}
public getTotalInDataBase(): number {
return super.getTotalInDataBase('dog');
}
}
const doggo = new Dog();
console.log(doggo.getTotalInDataBase());
В этом случае AnimalService
будет использовать HttpClient
, а UserService
.
UserService
будет использовать гораздо больше услуг.
Так как же получить экземпляр класса, который выглядит так const doggo = new Dog();
, который будет создавать / использовать / внедрять AnimalService, не передавая его во все классы?