У меня есть класс API:
export class ApiService {
constructor(public http: Http) { }
put(controller: string, method: string, data: Object) {
return this.http.put("http://127.0.0.1:8000",
JSON.stringify(data), {
})
.map(res => res.json())
.catch(err => {
return Observable.throw(err.json());
});
}
}
и класс AccountService:
export class AccountService {
api: ApiService;
constructor() {
this.api = new ApiService();
}
login(username: string, password: string) {
return this.api.put("accounts", "login", { username: username, password: password});
}
}
Однако, когда я запускаю этот пример, возникают две проблемы:
1) ApiService
нужен http в конструкторе. Поэтому this.api = new ApiService();
должен предоставить Http
, чего я не хочу.
Как я могу изменить ApiService
, чтобы мне не нужно было предоставлять Http
конструктору?
2) В AccountService
метод this.api.put
не найден на ApiService
. Чего я не понимаю, так как я создал экземпляр ApiService
в this.api
Http
сделать запрос, то как вы на самом деле хотите, чтобы он был переданApiService
? Почему вы не хотите, чтобыHttp
передавался DI? - person Günter Zöchbauer   schedule 22.01.2016