Карта недвижимости не существует на типа 'наблюдаемый '
Я пытаюсь вызвать API из Angular, но получаю эту ошибку:
Property 'map' does not exist on type 'Observable<Response>'
ответы на этот подобный вопрос не решили мою проблему:угловой 2 бета.17: свойство ' map 'не существует для типа'Observable'.
Я использую Angular 2.0.0-beta.17.
17 ответов:
вам нужно импортировать
mapоператор:import 'rxjs/add/operator/map'или более обобщенно:
import 'rxjs/Rx';
Примечание: Для версий RxJS
6.x.xи выше, вам придется использовать конвейерные операторы, как показано в приведенном ниже фрагменте кода:import { map } from 'rxjs/operators'; import { HttpClient } from '@angular/common/http'; // ... export class MyComponent { constructor(private http: HttpClient) { } getItems() { this.http.get('https://example.com/api/items').pipe(map(data => {})).subscribe(result => { console.log(result); }); } }это вызвано тем, что команда RxJS удаляет поддержку для использования Смотрите последние изменения в RxJS ' changelog для получения дополнительной информации.
особенности:
операторы: Pipeable операторы теперь должны быть импортированы из rxjs следующим образом:
import { map, filter, switchMap } from 'rxjs/operators';. Никакого глубокого импорта.
пересмотреть это, потому что мое решение не указано здесь.
Я запускаю Angular 6 с rxjs 6.0 и столкнулся с этой ошибкой.
вот что я сделал, чтобы исправить это:
сменил
map((response: any) => response.json())просто:
.pipe(map((response: any) => response.json()));Я нашел исправление здесь:
https://github.com/angular/angular/issues/15548#issuecomment-387009186
надеюсь, что это поможет.
у меня была такая же проблема с Angular 2.0.1, потому что я импортировал Observable из
import { Observable } from 'rxjs/Observable';Я решаю свою проблему при импорте Observable из этого пути вместо
import { Observable } from 'rxjs';
просто напишите эту команду в VS Code terminal вашего проекта и перезапустите проект.
npm install rxjs-compatвам нужно импортировать
mapоператор, напишите это:import 'rxjs/add/operator/map';
в rxjs 6 использование оператора карты было изменено теперь вам нужно использовать его вот так.
import { map } from 'rxjs/operators'; myObservable .pipe(map(data => data * 2)) .subscribe(...);Для справки https://www.academind.com/learn/javascript/rxjs-6-what-changed/#operators-update-path
в моем случае было бы недостаточно включить только карту и обещание:
import 'rxjs/add/operator/map'; import 'rxjs/add/operator/toPromise';я решил эту проблему, импортировав несколько компонентов rxjs как официальная документация рекомендую:
1) операторы импорта в одном приложении/rxjs-операторов.файл ТС:
// import 'rxjs/Rx'; // adds ALL RxJS statics & operators to Observable // See node_module/rxjs/Rxjs.js // Import just the rxjs statics and operators we need for THIS app. // Statics import 'rxjs/add/observable/throw'; // Operators import 'rxjs/add/operator/catch'; import 'rxjs/add/operator/debounceTime'; import 'rxjs/add/operator/distinctUntilChanged'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/switchMap'; import 'rxjs/add/operator/toPromise';2) импорт самого RxJS-оператора в ваш сервис:
// Add the RxJS Observable operators we need in this app. import './rxjs-operators';
Я использую угловой 5.2 и когда я использую
import 'rxjs/Rx';он бросает мне следующую ошибку корпии: TSLint: этот импорт занесен в черный список, вместо этого импортируйте подмодуль (import-blacklist)устранение: Решил ее с помощью импорт только тех операторов, которые мне нужны. Пример следующий:
import 'rxjs/add/operator/map'; import 'rxjs/add/operator/catch';таким образом, исправление будет заключаться в том, чтобы импортировать только необходимые операторы.
У меня была та же проблема, я использовал Visual studio 2015, которая имела более старую версию typescript.
после обновления расширения проблема была решена.
Я пробовал все возможные ответы, опубликованные выше, ни один из них не работал,
Я решил это, просто перезапустив свою IDE, т. е. Visual Studio Code
пусть это кому-то поможет.
просто установите rxjs-compat, набрав в терминале:
npm install --save rxjs-compatзатем импорт :
import 'rxjs/Rx';
для всех пользователей linux, имеющих эту проблему, проверьте, заблокирована ли папка rxjs-compat. У меня была такая же проблема, и я пошел в терминал, использовал sudo su, чтобы дать разрешение на всю папку rxjs-compat, и это было исправлено. Это при условии, что вы импортировали
import 'rxjs/add/operator/map'; import 'rxjs/add/operator/catch';в проект.ts файл, где оригинал .произошла ошибка карты.
Я тоже столкнулся с той же ошибкой. Одним из решений, которое сработало для меня, было добавить следующие строки в ваш сервис.ТС file вместо на
import 'rxjs/add/operator/map':import { Observable } from 'rxjs'; import { map } from 'rxjs/operators';например, мой приложение.услуга.ТС после отладки было похоже,
import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; @Injectable() export class AppService { constructor(private http: HttpClient) {} getData(): Observable<any> { return this.http.get('https://samples.openweathermap.org/data/2.5/history/city?q=Warren,OH&appid=b6907d289e10d714a6e88b30761fae22') .pipe(map(result => result)); } }
Если после импорта import 'rxjs/add/operator/map' или import 'rxjs / Rx' Вы тоже получаете ту же ошибку, то перезапустите редактор кода visual studio, ошибка будет устранена.
просто установить rxjs-compat решение проблемы
npm i rxjs-compat --save-devи импортировать его, как показано ниже
import 'rxjs/Rx';
выполнить npm install --save rxjs-compat@6
и импорт rxjs / Rx в сервисе.ТС
импорт 'rxjs/Rx'; Ошибка решена для меня.

Comments