2016-03-21 6 views
0

Ich habe den folgenden Code:Typoskript Angular2 - beschweren sich über fehlende Typen

var headers = new Headers(); 
          // headers.append('Content-Type', 'application/json'); 
          headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
          this.http.post(
           'http://192.168.1.45:3000/testrestapi', 
           {headers: headers} 
          ).map((res => res.json()) 
     .subscribe(data => { 
      // we've got back the raw data, now generate the core schedule data 
      // and save the data for later reference 
      this.data = data; 
     console.log('Friends Provider was a success!'); 
     console.log(JSON.stringify(data)); 
      resolve(this.data); 
     }, 
    (err)=>{ 
     console.log('Error in Friends Provider!'); 
    }, 
    ()=>{ 
      console.log('Friends Provider network call has ended!'); 
    } 
     ) 

     ) 
    }); 

Der Code kompiliert ohne Fehler in Ordnung, aber ich erhalte die folgenden Fehler in meiner ide:

enter image description here

I Ich folge dieser Dokumentation: https://angular.io/docs/js/latest/api/http/Http-class.html. Es zeigt, wie HTTP für GET, aber nicht für POST verwendet wird. Es scheint, dass ich den Typ für meine Kopfzeilen vermisse, die ich nicht sicher bin, was ich hier auch setzen soll, beklagt sich über den Typ für die subscribe Methode und wieder bin ich unsicher, was ich hier setzen soll, während ich den Dokumenten folge und es scheint nicht etwas anderes haben?

+0

ist es vollständiger Code? – micronyks

+0

* kompiliert ohne Fehler * und dann zeigen Sie ein Bild von Kompilierungsfehlern? Sie importieren Http zweimal wie der Fehler sagt, für Anfänger. Lies die Fehler und repariere die einfachsten zuerst. –

Antwort

1

Sie Http-Modul 2-mal in der 2. und 3. Zeile des Codes importiert haben, einer von ihnen überflüssig ist.

API für http Post ist:

post(url: string, body: string, options?: RequestOptionsArgs) : Observable<Response> 

in https://angular.io/api/http/Http

es erwartet einen JSON.stringified Körper als zweiter Parameter, aber Sie die Header-Optionen drängen, die der dritte Parameter sein sollte.

Ich schlage vor, auch

headers.set('Content-Type', 'application/json'); 

statt append verwenden.

Auch fehlen Ihnen die geklam- mert in nach Daten abonnieren.

.subscribe(
    (data) => { 
     console.log('Do something with data here \n',data); 
    } 
); 
+0

Danke! Gibt es einen Grund, warum set besser ist als append? – user2924127

+1

Da, wenn Sie die Methode verwenden, dass Ihre http-Anfrage und header.append mehr als einmal ist, werden Sie die Überschrift 2 mal anhängen :) – echonax

0
var headers = new Headers(); 
          // headers.append('Content-Type', 'application/json'); 
     headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
     this.http.post(
         'http://192.168.1.45:3000/testrestapi', 
           {headers: headers} 
        ) 
     .map((res => res.json()) 
     .subscribe(data => 
     { 

      this.data = data; 
      console.log('Friends Provider was a success!'); 
      console.log(JSON.stringify(data)); 
      //resolve(this.data); 
      }, 
     (err)=>{ 
     console.log('Error in Friends Provider!'); 
     }, 
     ()=>{ 
      console.log('Friends Provider network call has ended!'); 
     } 

     ); 
0

Der Code ohne Fehler fein kompiliert,

Nur weil Sie gültig bekommen JavaScript bedeutet nicht, dass es ohne Fehler kompiliert. Dies ist eigentlich ein TypeScript Feature (siehe why typescript).

Die Fehler, die Sie in den Fehlern zu sehen sind die Compiler errrors

Verwandte Themen