2016-05-13 56 views
5
功能

我的代码是为什么我this.http.get(...)。认购不angular2

 
    import 'rxjs/Rx'; 
    ... 
    let _this = this; 
    return new Promise(function(resolve, reject) { 
     _this.http[method](url, data, { 
      headers: headers 
     }) 
     .toPromise() 
     .then(
      (data) => { 
       resolve(data); 
      }, 
      error => { 
       reject(error); 
      } 
     ); 
    }); 

“订阅”不是来自我的代码,看起来像它的角原来有些东西, 。

错误消息:

 
EXCEPTION: Error: Uncaught (in promise): TypeError: _this.http.get(...).subscribe is not a function 
+4

你不需要'让_this = this'如果你使用'(解析,拒绝)=> {'来代替。当你使用'toPromise()'时,你不需要'新的Promise(...)'。只需'返回this.http [方法](url,data,{ headers:headers }) .toPromise();'应该这样做。 –

+0

绝对与Günter同意!关于你的错误,你使用的是哪个版本的Angular2?我试了一下beta17,但是我没有这个错误:https://plnkr.co/edit/TPy2UVEE8EE4MLTlf8yc?p = preview。 –

+0

Becoz我有几个步骤在“然后”,安装角与离子测试版 – nbsp

回答

1

你打击从promise基于异步模式的reactive-extensions替代移植过的Angular2举措。而不是使用一个承诺,请使用subscribe代替:

import 'rxjs/Rx'; 
... 
invoke<T>(onNext: (data: T) => void, onError: (error: any) => any) { 
    this.http[method](url, data, { 
     headers: headers 
    }) 
    .map(response => response.json() as T) 
    .subscribe(onNext, onError); 
}); 

我写了一篇博客文章这一点。

https://ievangelist.github.io/blog/angular-2-http/

相关问题