为什么';来自web API的t映射数据在Angular 2中工作

为什么';来自web API的t映射数据在Angular 2中工作,angular,asp.net-web-api,Angular,Asp.net Web Api,我是新来的。我正在尝试从web api获取一些数据,我可以看到数据在angular 2调用后被正确填充。我的问题是映射没有像我预期的那样工作 在我的角度服务中,我有: getEmployees() { return this._http.get(this._employeeUrl) .map(res => <Employee[]>res.json()) .catch(this.handleError); } 调试时,我可以看到它从web

我是新来的。我正在尝试从web api获取一些数据,我可以看到数据在angular 2调用后被正确填充。我的问题是映射没有像我预期的那样工作

在我的角度服务中,我有:

getEmployees() {
    return this._http.get(this._employeeUrl)
        .map(res => <Employee[]>res.json())
        .catch(this.handleError);
}
调试时,我可以看到它从web api中提取数据,类似于:

对象{id:10,名字:“Arash”,电话:“11212121”}

但它不会将对象转换为EmployeeList,也就是说,当我尝试执行EmployeeList.FirstName之类的操作时,它会说它未定义。我注意到,如果我将EmployeeList定义为:

公共雇员名单=[]

结果是一样的,所以我认为映射没有像我预期的那样工作


任何人都可以帮助解决这个问题。

转换到接口是对代码进行静态分析的工具的唯一信息。它不会改变应用程序的行为。接口只是在运行时删除的

您应该创建一个实现该接口的类,如

class MyEmployee implements Employee {
  constructor(public Id:number, public Firstname:string, publich Phone:string){}
}
像这样使用它

.map(res => res.json.map(e => new MyEmployee(e.id, e.firstName, e.phone))

转换到接口只是对代码进行静态分析的工具的信息。它不会改变应用程序的行为。接口只是在运行时删除的

您应该创建一个实现该接口的类,如

class MyEmployee implements Employee {
  constructor(public Id:number, public Firstname:string, publich Phone:string){}
}
像这样使用它

.map(res => res.json.map(e => new MyEmployee(e.id, e.firstName, e.phone))

谢谢你的回复。我将试一试,看看结果如何,但我想知道是否有其他方法可以在不使用构造函数的情况下自动映射对象。我关心的是有很多成员的对象。我不想一个接一个地映射它们。您可以确保服务器发送的数据与接口匹配,或者接口与实际接收的数据匹配,然后仅进行强制转换即可。谢谢您的回复。我将试一试,看看结果如何,但我想知道是否有其他方法可以在不使用构造函数的情况下自动映射对象。我关心的是有很多成员的对象。我不想一个接一个地映射它们。您可以确保服务器发送的数据与接口匹配,或者接口与实际接收的数据匹配,然后只进行强制转换即可。