2016-09-23 77 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:房产“送出数据”不上键入“HeatmapService”存在。

希望有人能帮助!

回答

1

当您提交表单时,请在您的onSubmit()函数中调用this.heatService.sendData(heatmap)....

如果您粘贴了整个HeatmapService,则没有sendData方法。这正是错误所说的。

请创建此方法或将其复制/粘贴到您的问题中。

+0

对不起,我正在尝试像'this.heatService(heatmap)'这样做,在此之前,我在一些教程中看到了一些工作。我只是建立了联系。 – since095

1

那么错误信息是非常明显的。 看着你的Heatmap类,我可以看到没有定义sendData方法,这就是为什么你会得到这个错误。