двигательный

тоящее время я переключаюсь с http (@ angular / http) на HttpClient (@ angular / common / http) и у меня возникают проблемы с отображением моего ответа на объекты.

Старый код (работал раньше)

this.http.get(environment.baseUrl + '/api/timeslots')
            .map((response: Response) => {
                    const data = response.json();
                    const timeslots = Array.of<Timeslot>();
                    for (const item of data) {...}

Новый код, но ошибка компиляции:

this.httpClient.get(environment.baseUrl + '/api/timeslots')
                .map((response: Response) => {
                        const data = <Timeslot[]> response;
const timeslots = Array.of<Timeslot>();
                    for (const item of data) {...}

Я пропускаю актерский состав? Ответ представляет собой массив временных интервалов.

 JB Nizet26 сент. 2017 г., 11:07
@ netshark1000 не просто говорит, что у вас "проблема" или "ошибка". Разместите полную и точную ошибку.
 netshark100026 сент. 2017 г., 11:06
Да - но это дает ошибку компиляции
 netshark100026 сент. 2017 г., 11:09
@yurzui ваша редакция решила это. Пожалуйста, напишите ответ, чтобы я мог принять его

Ответы на вопрос(3)

Вы все еще можете, но вам нужно импортироватьmap()-оператор из rxjs вот так:

import 'rxjs/add/operator/map';

И у вас будетmap() оператор.

(Смотрите также мой ответ здесь:https://stackoverflow.com/a/48323851/348841)

 mast3rd3mon16 мар. 2018 г., 15:59
это только для оригинального / старого метода Http
 Tom Saleeba19 июн. 2018 г., 10:03
это работает для меня, используя Angular 5 иHttpClient из'@angular/common/http'

RxJS в Angular.

Следовательно, операторы RxJS теперь расположены в «rxjs / operator» вместо «rxjs / add / operator /: OperatorName». Кроме того, эти операторы больше не могут быть напрямую связаны с наблюдением, вместо этого они должны быть связаны с помощью метода pipe ().

Итак, новый способ реализации этого должен выглядеть следующим образом:

import {map} from 'rxjs/operators';

this.http.get(...)
  .pipe(
    map( response => {
     // TODO: Do Your Staff Here! 
   } )
  );

Пожалуйста, обратитесь к конкретной документации AngularВот Больше подробностей. * Здесь я предполагаю, что вашHttpClient компонент доступен подthis.http двигательный

Решение Вопроса

которое возвращает новый HttpClient, является Object. Автоматически звонитresponse.json() внутренне.

Вы можете указать HttpClient, какой тип ответа будет:

this.httpClient.get<Timeslot[]>(...)
 .map((timeSlots) => {
   ...

гдеtimeSlotsтип будетTimeslot[]

Смотрите больше информации о проверке типов в новом HttpClient

https://angular.io/guide/http#typechecking-the-response

Ваш ответ на вопрос