Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
angular2 http解析承诺_Angular_Promise_Angular Routing - Fatal编程技术网

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请求?!这只是一个猜测。我无法从你的问题中找出问题所在。非常感谢你的回答。我想我需要得到答案在我继续之前,先看看这两种方法的区别。当然,没问题。