2016-05-13 6 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()'を使うときは、 ''新しいプロミス(...)は必要ありません。 .toPromise(); 'は、同じことを行う必要があります。 –

+0

Günterとまったく同意しました!あなたのエラーに関して、どのバージョンのAngular2を使用していますか? beta17で試しましたが、エラーはありません:https://plnkr.co/edit/TPy2UVEE8EE4MLTlf8yc?p=preview。 –

+0

Becoz私は "then"にいくつかのステップを持っており、イオンベータの角をインストールする – nbsp

答えて

1

あなたはreactive-extensions代替にpromiseベースの非同期パラダイムからオーバー移植の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/

関連する問題