我有网络API方法从EmpID获取数据,我从Angular 2调用此方法,并希望将数据绑定到表单以更新它。
我认为我没有正确地从服务中调用Web API方法, 但它给出了我们无法找到此Web API方法的错误。
Web API方法:
[ Route("api/Employee/GetEdit/{id:int}") ]
public Employee GetEdit(int id) {
return db.Employees.Where(t => t.EmpID == id).FirstOrDefault();
}
以下是我的服务:
GetEdit(id:any) {
let headers = new Headers({ 'Content-Type': 'application/json', 'Accept': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.get('http://localhost:49221/Employee/GetEdit/' + id, headers)
.map((res: Response) => res.json());
//return this.http.get('http://localhost:49221/api/Employee')
// .map(this.extractData)
// .catch(this.handleError);
}
以下是我的组件类:
getEdit() {
this._service.GetEdit(1).subscribe(
posts => this.employee = posts,
error => console.error(error)
)};
答案 0 :(得分:1)
您的代码看起来很好,但我认为您忘记将 api 放在您的网址中,这就是您无法获取所需信息的原因。
您还可以考虑为基本网址创建变量,然后只需将ID添加到其末尾,这样您的代码就会变得更清晰。
GetEdit(id:any) {
let headers = new Headers({ 'Content-Type': 'application/json', 'Accept': 'application/json' });
let options = new RequestOptions({ headers: headers });
return this.http.get('http://localhost:49221/api/Employee/GetEdit/' + id, headers)
.map((res: Response) => res.json());
//return this.http.get('http://localhost:49221/api/Employee')
// .map(this.extractData)
// .catch(this.handleError);
}
这是http呼叫的固定版本,并在网址中添加了 api 关键字。
P.S:您还可以考虑将响应转换为确切的对象(如果您为此目的创建了特定的类)
这样的事情:
getEdit() {
this._service.GetEdit(1).subscribe(
posts => this.employee = <Employee>posts,
error => console.error(error)
)};
正如我所说,这是考虑到您已经创建了一个员工类。