2016-09-23 4 views
0

내 코드는 다음과 같습니다.게시물 요청으로 데이터를 보내지 않고 서버를 다시 시작합니다 (Angular2/Node.js)

서비스 :

import { Injectable } from "@angular/core"; 
import { Http, Headers, RequestOptions } from "@angular/http"; 
import { Observable } from "rxjs/Observable"; 
import 'rxjs/Rx'; 

import {Heatmap} from "./heatmap" 

@Injectable() 
export class HeatmapService { 
constructor (private _http: Http) {} 

    signup(heatmap: Heatmap) { 
     const body = JSON.stringify(heatmap); 
     const headers = new Headers({'Content-Type': 'application/json'}); 
     const options = new RequestOptions({ headers: headers }); 

     return this._http.post('http://localhost:8080/create', body, options) 
      .map(response => response.json()) 
      .catch(error => Observable.throw(error.json())); 
    } 
} 

구성 요소 :

import { Component, OnInit } from "@angular/core"; 
import { FormBuilder, FormGroup, FormControl, Validators } from "@angular/forms"; 

import { Heatmap } from "./heatmap"; 
import { HeatmapService } from "./heatmap.service"; 

@Component({ 
    templateUrl: 'js/app/heatmap/heatmap.component.html' 
}) 

export class heatmapComponent implements OnInit { 

    myForm: FormGroup; 

    constructor(private formBuilder: FormBuilder, public heatService: HeatmapService) {} 

    onSubmit() { 
     const heatmap = new Heatmap(this.myForm.value.name, this.myForm.value.data, this.myForm.value.country); 
     console.log(heatmap) 

     this.heatService.sendData(heatmap) 
      .subscribe(
       data => console.log(data), 
       error => console.error(error) 
      ) 
    } 

    ngOnInit() { 
     this.myForm = this.formBuilder.group({ 
      name: ['', Validators.required], 
      data: ['', Validators.required], 
      country: ['', Validators.required] 
     }); 
    } 
} 

HTML :

<form [formGroup]="myForm" (ngSubmit)="onSubmit()"> 
    <div class="form-group"> 
     <label for="name">name</label> 
     <input type="text" id="name" class="form-control" formControlName="name"> 
    </div> 
    <div class="form-group"> 
     <label for="data">data</label> 
     <input type="text" id="data" class="form-control" formControlName="data"> 
    </div> 
    <div class="form-group"> 
     <label for="country">country</label> 
     <input type="text" id="country" class="form-control" formControlName="country"> 
    </div> 
    <button type="submit" class="btn btn-primary" [disabled]="!myForm.valid">Sign Up</button> 
</form> 

히트 맵 :

export class Heatmap { 
    constructor(public name: string, public data: string, public country: string){} 
} 

문제 :

양식을 제출할 때마다 데이터가 기록되지 않아 서버가 자동으로 다시 시작되고 어떤 오류도 볼 필요가 없습니다.

내가 할 수있는 유일한 오류가 꿀꺽에서 출력 -

오류 TS2339 : 부동산의 '같이 sendData가'형 'HeatmapService'에 존재하지 않습니다.

누군가 도움을 줄 수 있기를 바랍니다.

답변

1

양식을 제출할 때 this.heatService.sendData(heatmap)....을 onSubmit() 함수로 호출합니다.

HeatmapService 전체를 붙여 넣은 경우 sendData 메서드가 없습니다. 그게 오류가 말하는 것과 정확히 같습니다.

이 방법을 만들거나 질문에 복사/붙여 넣기하십시오.

+0

아, 네가 미안하다. 나는 이것을 'this.heatService (heatmap)'처럼하기 전에이 튜토리얼에서 작업을 시도했다. 방금 연결 했어. – since095

1

글쎄, 오류 메시지는 꽤 분명합니다. Heatmap 클래스를 보면 정의 된 sendData 메서드가 없다는 것을 알 수 있습니다. 그 이유는 그 오류가 발생하는 이유입니다.

관련 문제