首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角7 HttpClient响应类型为类

角7 HttpClient响应类型为类
EN

Stack Overflow用户
提问于 2018-12-21 16:16:39
回答 1查看 691关注 0票数 2

我试图使用httpclient从http调用转换响应,并创建我创建的类的实例。

问题

HttpClient似乎没有使用响应对象的属性创建类的新实例。请帮帮我!

我尝试过创建一个类vs接口。不知道我还需要在这里做什么。

My Class

代码语言:javascript
复制
export class Escalation {    
  constructor(private NAME: string, private DESCRIPTION: string) { }    

  public get name() {    
    return this.NAME;    
  }

  public set name(name: string) {    
    this.NAME = name;    
  }

  public get description() {    
    return this.DESCRIPTION;    
  }

  public set description(description: string) {    
    this.DESCRIPTION = description;    
  }    
}

My Service

代码语言:javascript
复制
public getEscalation(escalationName) {    
    return this.http.get(`${this.globals.baseRestUrl}/companies/escalations/${escalationName}`);    
  }

我的组件

代码语言:javascript
复制
public escalation: Escalation = new Escalation('', '');    

this.companiesService.getEscalation(escalationName).subscribe(    
        (escalationResponse: Escalation) => this.escalation = {    
          ...escalationResponse    
        }, (error: any) => {       
          console.log(error);   
        }    
      );

预期结果

我原以为我的响应会被抛出,以便在api回调中键入升级(我的类)。

实际结果

api返回如下所示的对象:

代码语言:javascript
复制
{    
    NAME: 'Escalation 1',    
    DESCRIPTION: 'This is a test description'    
}   

但最终this.escalation返回未定义的

我希望我解释得很清楚。如果你需要更多的信息,请告诉我!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-02 16:32:08

(escalationResponse: Escalation)代码行实际上并不打算从HttpClient转换响应,而是用于推断它是什么类型。

您可以考虑将代码调整为this.escalation = new Escalation(escalationResponse.NAME, escalationResponse.DESCRIPTION)

我相信this.escalation = { ...escalationResponse }实际上只是在解构这些属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53887866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档