2016-05-13 19 views
5

mio codice èperchè ho sempre avuto this.http.get (...). Sottoscrizione non è una funzione in 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); 
      } 
     ); 
    }); 

Il "subscribe" non provengono da mio codice, sembra che sia qualcosa di originale angolare .

Messaggio di errore:

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

Non è necessario lasciare '_this = this' se si utilizza' (determinazione, rifiutare) => { 'invece. Non hai bisogno di 'new Promise (...)' quando usi 'toPromise()'. Solo 'return this.http [metodo] (url, dati, { intestazioni: intestazioni }) .toPromise();' dovrebbe fare lo stesso. –

+0

Definitivamente d'accordo con Günter! Per quanto riguarda il tuo errore, quale versione di Angular2 usi? Ho provato con beta17 ma non ho l'errore: https://plnkr.co/edit/TPy2UVEE8EE4MLTlf8yc?p=preview. –

+0

Becoz ho pochi passaggi in "then", installa angolare con beta ionico – nbsp

risposta

1

Si sono la lotta contro la Angular2 iniziativa del porting dall'esercizio basato paradigma asincrono promise al reactive-extensions alternativa. Invece di usare una promessa, utilizzare il subscribe invece:

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); 
}); 

ho scritto un post su questo blog anche.

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

Problemi correlati