angular2 http解析承诺
各位晚上好 我正试图进入安格拉尔,但遇到了一个阻碍我继续前进的问题 服务:angular2 http解析承诺,angular,promise,angular-routing,Angular,Promise,Angular Routing,各位晚上好 我正试图进入安格拉尔,但遇到了一个阻碍我继续前进的问题 服务: getProject(id: number): any { var url = this.ProjectsUrl + '/'+ id; return this.http.get(url) .toPromise() .then(response => { console.log(response.json().data as Project);
getProject(id: number): any {
var url = this.ProjectsUrl + '/'+ id;
return this.http.get(url)
.toPromise()
.then(response => {
console.log(response.json().data as Project);
})
.catch(this.handleError);
}
getProject(id: number): any {
var url = this.ProjectsUrl + '/'+ id;
return this.http.get(url)
.map(response => {
response.json().data as Project;
})
.catch(this.handleError);
}
组成部分:
getProject(id:number){
this.projectService
.getProject(id)
.then(project => this.project = project);
}
getProject(id:number){
this.projectService
.getProject(id)
.subscribe(project => {
this.project = project
});
}
恩戈尼尼特()
输出:
b4 getProj
after getProj
Object { Project }
我不明白为什么这个承诺不能得到解决?有什么建议吗 我想这就是你想要的:
getProject(id:number){
return this.projectService // <<<=== added return
.getProject(id)
.then(project => this.project = project);
}
ngOnInit() {
this.sub = this.route.params.subscribe(params => {
this.getCustomers();
console.log('b4 getProj')
this.getProject(+params["id"])
.then(_ => console.log('after getProj')); // <<<=== changed
});
}
getProject(id:number){
返回this.projectService//console.log('after getProj');//Angular2的一个优点是它支持可观察到的内容而不是承诺
以防万一,如果您想使用可观测值代替承诺,那么可以使用以下代码:
服务:
getProject(id: number): any {
var url = this.ProjectsUrl + '/'+ id;
return this.http.get(url)
.toPromise()
.then(response => {
console.log(response.json().data as Project);
})
.catch(this.handleError);
}
getProject(id: number): any {
var url = this.ProjectsUrl + '/'+ id;
return this.http.get(url)
.map(response => {
response.json().data as Project;
})
.catch(this.handleError);
}
组成部分:
getProject(id:number){
this.projectService
.getProject(id)
.then(project => this.project = project);
}
getProject(id:number){
this.projectService
.getProject(id)
.subscribe(project => {
this.project = project
});
}
我希望这有帮助
请记住在您的服务中添加以下声明:
import { Observable } from 'rxjs';
为什么你认为有些问题无法解决?谢谢你的回答,甘特。我明天肯定会试试。但我想知道为什么我发布的代码片段适用于除此之外的所有其他http请求?!这只是一个猜测。我无法从你的问题中找出问题所在。非常感谢你的回答。我想我需要得到答案在我继续之前,先看看这两种方法的区别。当然,没问题。