Угловое 5-6 Обновление: свойство 'map' не существует по типу Observable
Ive обновил мое угловое приложение с версии 5 до 6 и получил эту ошибку из следующего кода.
const request = this.evidenceService.get().map((res) => res.data)
.catch(error => Observable.of(null));
Свойство 'map' не существует в типе 'Observable'.
Ответы
Ответ 1
Цепочка операторов была переведена на использование.pipe() в RXJS v6, вы должны следовать рекомендованному пути миграции для RXJS. Кроме того, оператор catch был переименован в catchError.
Вот как это должно быть сделано сейчас:
const request = this.evidenceService.get().pipe(
map((res) => res.data)),
catchError(error => Observable.of(null))
);
Ответ 2
согласно https://www.academind.com/learn/javascript/rxjs-6-what-changed/
в прошлом
import 'rxjs/add/operator/map'
myObservable
.map(data => data * 2)
.subscribe(...);
сейчас
import { map } from 'rxjs/operators';
myObservable
.pipe(map(data => data * 2))
.subscribe(...);
Ответ 3
Это решило мою проблему вот код:
import { map } from "rxjs/operators";
********************************************** Пример ** Ниже **************************************
getPosts(){
this.http.get('http://jsonplaceholder.typicode.com/posts')
.pipe(map(res => res.json()));
}
}
Ответ 4
использование
.pipe(map((res) => res.data))
вместо
.map((res) => res.data)