Angular 2:Http POST错误

时间:2017-09-09 22:18:30

标签: angular typescript

我正在尝试在angular2中创建一个POST注册服务,但它不能很好地工作。 所以这是我的 user.ts

export class User {
    id:number;
    name:string;
    email:string;
    birthDate:Date;
}

然后 signup.service.ts

import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import { User } from "../../models/user";

@Injectable()
export class SignupService {
  url: string = 'http://localhost:8080/signup';

  constructor(private http: Http) { }

  createUser(user: User): Observable<any> {
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });
    return this.http
      .post(this.url, user, options)
      .map(this.extractData)
      .catch(this.handleErrorObservable);
  }
  private extractData(res: Response) {
    let body = res.json();
    return body.data || {};
  }
  private handleErrorObservable(error: Response | any) {
    console.error(error.message || error);
    return Observable.throw(error.message || error);
  }
}

最后 signup.component.ts

import { Component } from '@angular/core';
import {Router} from "@angular/router";
import { User } from "../../models/user";
import { SignupService } from "../../services/signup/signup.service";

@Component({
  selector: 'signup',
  templateUrl: './signup.component.html',
  styleUrls: ['./signup.component.css']
})

export class SignupComponent {

  user: User = {
    id:0, 
    name:'Test',
    email:'test@test.com',
    birthDate: new Date()
    };

  constructor(private signupService: SignupService) { }

  addUser():void {
    this.signupService.createUser(this.user)
    .subscribe(u => this.user = u);
  }
}

我得到的错误是:

  

src / app / services / signup / signup.service.ts(27,12)中的错误:类型   类型参数“T”的参数不能从用法中推断出来。   请考虑明确指定类型参数。

     

类型参数候选“响应”不是有效的类型参数   因为它不是候选人'响应'的超类型。

     

属性“类型”的类型不兼容。   类型'ResponseType'不能分配给'ResponseType'类型。存在两种具有此名称的不同类型,但它们是不相关的。   类型'“basic”'不能分配给'ResponseType'类型。

     

src / app / services / signup / signup.service.ts(34,17)中的错误:属性   “承诺”类型中不存在“数据”。

我其实是初学者。我尝试将createUser(user: User): Observable<User>代替createUser(user: User): Observable<any>,但我仍然遇到相同的错误。 我的代码中没有任何“数据”或Promise类型,我不明白。 如果有人能帮助我,我会非常感激。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您的代码看起来很好。尝试在您的服务中替换此代码并检查您是否收到了响应。

/b/*