2016-01-29 2 views
1

Я работаю над простым CRUD-приложением в angular2, и у меня возникли проблемы с отправкой на серверный сервер. Мой код для класса выглядит следующим образом:angular2 http: post throwing error

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"; 
+0

Вы должны ввести Http в свой конструктор. –

+0

'Http' должен быть там импортирован, и ваш конструктор классов должен определить новый объект из него. В противном случае он должен быть там в вашем родительском компоненте atleast –

ответ

1

Вам нужно впрыскивать http объект в компоненте конструктора:

import {Http} from 'angular2/http'; 

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

    constructor(private http: Http, personFormBuilder: FormBuilder) { 
    (...) 
    } 
} 

Надеется, что это помогает вам, Тьерри

+0

не может быть в случае, если у ОП есть зависимость« Http », введенная в родительский компонент? –

+1

@Pankaj Я не вижу родительского компонента в вопросе ;-) Я думаю, что 'PersonForm' является компонентом. Объект 'Http' должен быть предоставлен путем инъекции, а не как параметр компонента ... –

+0

Имеют смысл, просто подумайте об этом :) +1 –