Если я создаю вспомогательный класс, например. UserList, в который HttpClient вложил его в него, тогда тот, кто создает экземпляр этого класса, должен будет передать ему объект HttpClient в конструкторе. Должен ли @inject (HttpClient) заботиться о том, чтобы получить синглтон HttpClient и ввести его в конструктор? В противном случае каждый класс, который должен ссылаться на UserList, также получит ссылку на HttpClient, чтобы затем передать его в конструктор UserList (и победить цель инъекции).Инъекция зависимостей Aurelia при создании объектов
UserList.ts
@inject(HttpClient)
export class UserList {
constructor(public http: HttpClient){
}
...
}
DoSomething.ts
export class DoSomething {
userList: UserList;
constructor(){
this.userList = new UserList(); //doesn't work without passing HttpClient
}
}
, чтобы сделать эту работу, я должен получить ссылку на HttpClient в классе DoSomething, даже если он не будет использовать его непосредственно , Рабочая версия, которая, кажется, плохо реализован:
DoSomething.ts
@inject(HttpClient)
export class DoSomething {
userList: UserList;
constructor(public http: HttpClient){
this.userList = new UserList(http);
}
}
Импортировать 'inject'? 'import {inject} из 'aurelia-framework';' – Randy
Проблема в опубликованном вами кодексе заключается в том, что вы не держитесь за ссылку на «HttpClient» в «UserList». В любом случае, приведенный ниже ответ JamesCarters верен. –