Angular 7 HttpClient тип ответа как класс - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь привести свой ответ от http get, используя httpclient, и создать экземпляр класса, который я создал.

ПРОБЛЕМА
Кажется, что HttpClient не создает новый экземпляр моего класса, используя свойства своего объекта ответа.Пожалуйста, помогите!

Я попытался создать интерфейс класса против.Не уверен, что еще мне нужно здесь делать.

Мой класс

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;    
  }    
}

Мой сервис

public getEscalation(escalationName) {    
    return this.http.get(`${this.globals.baseRestUrl}/companies/escalations/${escalationName}`);    
  }

Мой компонент

public escalation: Escalation = new Escalation('', '');    

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

Ожидаемый результат
Я ожидал, что мой ответ будет приведен к типу Escalation (Мой класс) при обратном вызове API.

Фактический результат
API возвращает объект примерно так:

{    
    NAME: 'Escalation 1',    
    DESCRIPTION: 'This is a test description'    
}   

Но в конечном итоге this.escalation возвращает undefined

Надеюсь, я объяснил этоЧто ж.Пожалуйста, дайте мне знать, если вам нужна дополнительная информация!

1 Ответ

0 голосов
/ 02 января 2019

Строка кода (escalationResponse: Escalation) на самом деле не предназначена для приведения ответа от HttpClient, а скорее к выводу , какой это тип.

Вы можете подумать о том, чтобы настроить свой код на this.escalation = new Escalation(escalationResponse.NAME, escalationResponse.DESCRIPTION)

Я считаю, что this.escalation = { ...escalationResponse } на самом деле только деконструирует свойства.

...