2016-03-21 3 views
0

У меня есть следующий код:Машинопись Angular2 - жалуется о несуществующих типов

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

     ) 
    }); 

Код отлично компилируется без ошибок, но я получаю следующие ошибки в моем язь:

enter image description here

I Я следую этим документам: https://angular.io/docs/js/latest/api/http/Http-class.html. Он показывает, как использовать HTTP для GET, но не для POST. Кажется, мне не хватает типа для моих заголовков, и я не уверен, что здесь делать, и он жалуется на тип метода подписки, и снова я не уверен, что здесь делать, поскольку я следую за документами, и это не кажется есть что-то другое?

+0

полный код? – micronyks

+0

* компилируется отлично без ошибок *, а затем вы показываете изображение ошибок компиляции? Вы импортируете Http дважды, как говорит ошибка, для стартеров. Прочтите ошибки и сначала исправьте простейшие. –

ответ

1

Вы импортировали модуль Http 2 раза в 2-й и 3-й строках кода, один из них является излишним.

API для HTTP POST является:

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

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

ожидает тело JSON.stringified в качестве второго параметра, но вы раздвигаете варианты заголовков, которые должны быть третьим параметром.

Я также предлагаю использовать

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

вместо append.

Также вам не хватает скобки в подписке после данных.

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

Спасибо! Есть ли причина, почему set лучше, чем append? – user2924127

+1

Потому что, если вы используете метод, который ваш HTTP-запрос и header.append уже более одного раза, вы добавите заголовок 2 раза :) – 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

Код отлично компилируется без ошибок,

Просто потому, что вы получите действительный JavaScript не означает, что она составлена ​​без ошибок. Это на самом деле функция TypeScript (см. why typescript).

Ошибки, которые вы видите в ошибке являются компилятор errrors

Смежные вопросы