Angular HttpClient фактически не преобразуется в объект

У меня есть простой класс, определенный в Angular с некоторыми свойствами, а затем я получаю результаты через Angular 4 HttpClient, набранный get.

getQuestions(): Observable<EhsAssessmentQuestion[]> {
    this.http.get<EhsAssessmentQuestion[]>(....);
}

а затем я использую его так:

       this.ehsAssessmentService
             .getQuestions()
             .subscribe((data: EhsAssessmentQuestion[]) => {
                 if (data[0] instanceof EhsAssessmentQuestion) {
                     console.info("Yes!");
                 }

В основном я просто возвращаю объект javascript, а не свой класс EhsAssessmentQuestion. Что мне нужно сделать, чтобы сделать его правильным типом?


person Gargoyle    schedule 24.05.2018    source источник
comment
может быть, потому что вы не упомянули тип в ответе   -  person NiVeR    schedule 24.05.2018
comment
Я, см. отредактированный вопрос. Форматирование было отключено в исходном сообщении.   -  person Gargoyle    schedule 24.05.2018
comment
Я имею в виду data.   -  person NiVeR    schedule 24.05.2018
comment
Пробовал и это, основываясь на ответе @Hamed. До сих пор не работает.   -  person Gargoyle    schedule 24.05.2018
comment
Я отредактировал вопрос, чтобы явно сказать, что Angular 4 HttpClient набрал get. Извините за путаницу.   -  person Gargoyle    schedule 24.05.2018


Ответы (1)


Кажется, что вы получаете от наблюдаемого Observable<Response>, а не Observable<EhsAssessmentQuestion[]>. Вы должны справиться с отображением самостоятельно:

 return this.http.get(url)
  .map(res => { 
    return res.json().results.map(item => { 
      return new EhsAssessmentQuestion( 
          item.firstProperty,
          item.secondProperty,
          ...
      );
    });
person NiVeR    schedule 24.05.2018
comment
Это было верно в Angular 3, но с добавлением HttpClient в 4 типизация должна работать. среда. com/codingthesmartway-com-blog/ - person Gargoyle; 24.05.2018
comment
Ну попробуй сначала. Согласно (https://codecraft.tv/courses/angular/http/http-with-observables/) это все еще актуально. - person NiVeR; 24.05.2018
comment
Это не использование Angular 4 HttpClient. Обратите внимание на отсутствие приведения к типу. Сопоставленный объект из HttpClient не содержит вызова json(). Я уже получаю фактические объекты JSON. - person Gargoyle; 24.05.2018
comment
Вы должны указать в вопросе, хотите ли вы, чтобы он работал определенным образом, иначе люди (такие как я) будут тратить время на ответ, и это окажется бесполезным. - person NiVeR; 24.05.2018