【问题标题】:Post request restarts server without sending data (Angular2 / Node.js)发布请求重新启动服务器而不发送数据(Angular2 / Node.js)
【发布时间】:2016-09-23 17:05:58
【问题描述】:

这是我的代码;

服务:

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){}
}

问题:

每次我提交表单时,我的服务器都会自动重新启动,而不会记录任何数据,并且没有给我时间查看任何正在处理的错误。

我得到的唯一错误是 gulp 的输出 -

错误 TS2339:“HeatmapService”类型上不存在属性“sendData”。

希望有人能帮忙!

【问题讨论】:

    标签: node.js mongodb angular


    【解决方案1】:

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

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

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

    【讨论】:

    • 哦,你说得对,对不起,我试图像`this.heatService(heatmap)` 那样做,之前我在一些教程中看到过。我刚刚建立了联系。
    【解决方案2】:

    嗯,错误信息很明显。 查看您的 Heatmap 类,我可以看到没有定义 sendData 方法,这就是您收到该错误的原因。

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 2020-09-17
      • 2015-08-31
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      相关资源
      最近更新 更多