我想在angular2中做一個POST註冊服務,但它不能很好地工作。 因此,這裏是我的user.ts:Angular 2:Http POST錯誤
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:'[email protected]',
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'的參數類型 無法從使用情況中推斷出來。 考慮明確指定類型參數。
類型參數候選'Response'不是有效的類型參數 ,因爲它不是候選'Response'的超類型。
屬性'類型'的類型不兼容。 類型'ResponseType'不可分配給'ResponseType'類型。這個名稱存在兩種不同的類型,但它們不相關。 類型''basic''不可分配給'ResponseType'類型。
錯誤在src/app/services/signup/signup.service.ts(34,17)中:屬性 '數據'在類型'Promise'上不存在。
我其實是一個初學者。我試圖把createUser(user: User): Observable<User>
而不是createUser(user: User): Observable<any>
,但我仍然得到相同的錯誤。 我的代碼中沒有任何「數據」或Promise類型,我不明白。 如果有人可以幫助我,我會非常感激。 在此先感謝。
感謝您的回答。它現在有效。 –