angular2 http:后抛出错误

angular2 http:后抛出错误,http,post,angular,Http,Post,Angular,我正在angular2中开发一个简单的CRUD应用程序,在发布到后端服务器时遇到问题。我的类代码如下 export class PersonForm { data:Object; loading: boolean; personForm: ControlGroup; http:Http; constructor(personFormBuilder: FormBuilder) { this.personForm = personFormBuilder.group({

我正在angular2中开发一个简单的CRUD应用程序,在发布到后端服务器时遇到问题。我的类代码如下

export class PersonForm {
  data:Object;
  loading: boolean;
  personForm: ControlGroup;
  http:Http;
  constructor(personFormBuilder: FormBuilder) {
    this.personForm = personFormBuilder.group({
      'name': [],
      'age': []
    });
  }

  onSubmit(value:any) : void {
    console.log('you submitted these values: ', value);
    this.http.post("http://localhost:3000/people/create",JSON.stringify(value))
      .subscribe((res: Response) => {
        this.data = res.json();
        this.loading = true;
  });

 }

}
上述操作导致我的控制台出现以下错误。我不确定什么是未定义的,因为我遵循我找到的每个示例:

EXCEPTION: Error during evaluation of "ngSubmit"
ORIGINAL EXCEPTION: TypeError: undefined is not an object
(evaluating 'this.http.post')
这是我的导入,以防我缺少一个组件

import {Component } from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser';
import {CORE_DIRECTIVES,FORM_DIRECTIVES, FormBuilder} from 'angular2/common';
import {HTTP_PROVIDERS, Http, Response, Headers} from 'angular2/http';
import {ControlGroup} from "angular2/common";

您需要在组件构造函数中插入
http
对象:

import {Http} from 'angular2/http';

@Component({
  (...)
})
export class PersonForm {
  data:Object;
  loading: boolean;
  personForm: ControlGroup;
  http:Http;

  constructor(private http: Http, personFormBuilder: FormBuilder) {
    (...)
  }
}
希望它能帮助你,
Thierry

您必须在构造函数中插入Http。
Http
应该在那里导入&您的类构造函数应该从中定义一个新对象。。否则它至少应该存在于父组件中。如果OP在父组件中注入了依赖项,则不能这样做吗?@Pankaj我在问题中看不到父组件;-)我猜
PersonForm
是一个组件。一个
Http
对象应该通过注入而不是作为组件的参数来提供……有意义,只要想一想:)+1