Angular 6:问题接收对象并解析它

时间:2018-12-13 22:40:12

标签: angular parsing httpclient

我从webAPI收到

return Ok(new List<DomainBO>() { userDomain });

我用stringyfy得到这个对象:

[
  {
    "id": 281,
    "domainName": "MTH",
    "domainTypeId": 2,
    "domainTypeName": "Carrier"
  }
]

在我的服务中,我是这样的:

this.httpClient.get( environment.apiUrl + this.config.getSettings()['cleard']['api']['user']['Domain'], { headers: new HttpHeaders({ 'Authorization': 'BEARER ' + this.auth.getUserSession().access_token }), responseType: 'json'}).toPromise().then(
      (Domain: any) => {
        console.log(typeof (Domain));
        this.Domain = Domain;
        console.log('domains : ' + Domain + ' this.domainID : ' + this.Domain);
      });

,我在Web API中的模型类是:

public class DomainBO
{
        public int Id { get; set; }
        public string DomainName { get; set; }

        public int DomainTypeId { get; set; }
        public string DomainTypeName { get; set; }
}

为什么不能将其解析为我的有角物体?

谢谢男孩和女孩:)

1 个答案:

答案 0 :(得分:0)

您的背景可能来自强类型语言:)

因此在TS / JS中,没有反序列化器。有一些解决方案,因此您可以反序列化,但是我会避免使用它们,因为这是不必要的。

因此,当您执行this.httpClient.get(url, (response: DomainBO) => {});时,这不会实例化您的课程。

您需要手动手动实例化该对象:

this.httpClient.get(url, (response: any) => {
     this.domain = new Domain(response.id)
});

但是,与response:any一样,这仍然不是理想的解决方案。您可以做的是创建一个Interface

export interface Domain {
    id: string;
}

然后您可以像使用它:

this.httpClient.get(url, (response: Domain) => {
 this.domain = new Domain(response.id)
 console.log('domains : ' + Domain + ' this.domainID);
});