我正在尝试在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类型,我不明白。
如果有人能帮助我,我会非常感激。
提前谢谢。
答案 0 :(得分:0)
您的代码看起来很好。尝试在您的服务中替换此代码并检查您是否收到了响应。
/b/*