syamskoy
@syamskoy

Как заинжектить сервис в класс данных?

С DI в компонентах все понятно - их автоматом инжектит angular, если они указаны в конструкторе. Но как быть, если сервис нужен в классе данных, например каком-нибудь
class user {
id: number;
name: string;
constructor(id: nubmer, name: string) {
this.id = id;
this.name = name;
}
get address(){
/* someService */
}
}


Во-первых, тут конструктор уже занят. И даже если его заменить на функцию-фабрику отдающую тот же инстанс, то автоинъекция не будет работать в данной классе ибо он создается через new. Нагуглив решение, получился такой костыль: в конструкторе указать:
let injector = ReflectiveInjector.resolveAndCreate([UserService]);
User.userService = injector.get(UserService);


Есть еще варианты решение задачи?
  • Вопрос задан
  • 198 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы