在Angular 4中将服务器站点模型映射到客户端站点模型

时间:2017-11-01 17:13:09

标签: angular typescript

我的服务器站点C#模型

 public  class Teacher:Entity
 {
    public string Name { get; set; }
    public string PhoneNo { get; set; }
 }

客户端网站TypeScript模型

export class Teacher extends Entity {
    public name:string;
    public address:string;
    public phoneNo :string;
}

客户端网站服务

getDataById(id: string):Observable<T> {
    return this.repo.get(this.subUrl+'query',id).map( (res)=>{ return <T> res.json()})
}

客户端站点控制器

this.subscription= this.techerService.getDataById(this.id).subscribe( (data:Teacher) =>{
       console.log(data);
       this.model.name=data.name;
       console.log(this.model))};

输出结果:Result on browser

我可以在没有这种映射的情况下映射吗?

this.model.name=data['Name'];

我想映射这种方法或更好的方法

this.model.name=data.name;

请帮忙

2 个答案:

答案 0 :(得分:1)

您对Teacher的声明有一个小写name。您收到一个大写Name的对象。 TypeScript应该抱怨data没有Name成员,因此请将您的data参数声明为any,而不是Teacher

this.subscription= this.techerService.getDataById(this.id).subscribe((data:any) =>{
       console.log(data);
       this.model.name=data.Name;
       console.log(this.model);

答案 1 :(得分:0)

试试这个:

this.subscription= this.techerService.getDataById(this.id).subscribe( (data:Teacher) =>{
       console.log(data);
       this.model.name=data.Name;
       console.log(this.model)