Как использовать карту внутри подписки rxjs6 - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть служба, которая возвращает Observable, после получения ответа я сопоставляю ответ и присваиваю результат массиву.

  this.dataService.fetchData().subscribe(response =>{
    [...this.DataMappingField ]=  response.map(({ ID: id, Name: name }) => ({ id, name }));
  });

С операторами распространения внутри подписки я получаю ошибку ниже.

Ошибка: свойство 'map' не существует для типа 'Modelclass'.

Ответ от службы

[
  {ID: 6197, Name: 'A', desc: null,catergory:'lap'},
  {ID: 6198, Name: 'B', desc: null,catergory:'lap'}
]

В процессе эксплуатации fetchData Метод:

fetchData(): Observable<Modelclass> {
  return this.http
    .get<Modelclass>(REQUEST_URL)
    .pipe(
      tap(response => response)
    );
}

Класс модели:

export class Modelclass {
  ID: any;
  Name: string;
}

Но приведенный ниже код работает нормально при вызове метода:

this.dataService.fetchData().subscribe(this.fetchResponse);

private fetchResponse(response): void => {
  [...this.DataMappingField ]= response.map(({ ID: id, Name: name }) => ({ id, name }));
}

1 Ответ

0 голосов
/ 07 сентября 2018

Мне кажется, проблема в неправильном наборе ответа. Определение метода fetchData должно быть таким:

fetchData(): Observable<Modelclass[]> {
  return this.http
    .get<Modelclass[]>(REQUEST_URL)
    .pipe(
      tap(response => response)
    );
}

Примечание. Я использую Modelclass[] в качестве типа ответа.

...