2016-05-13 66 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/

相關問題