我有一个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
答案 0 :(得分:2)
事实上,你可以通过依赖注入将ApiService
的实例导入AccountService
:
export class AccountService {
constructor(private api: ApiService) {
}
}
您只需注册两项服务:
bootstrap(AppComponent, [AccountService, ApiService]);
否则,我认为您无法使用put
中ApiService
的{{1}}方法。
希望它可以帮到你, 亨利