Карта недвижимости не существует на типа 'наблюдаемый '



Я пытаюсь вызвать API из Angular, но получаю эту ошибку:



Property 'map' does not exist on type 'Observable<Response>'



ответы на этот подобный вопрос не решили мою проблему:угловой 2 бета.17: свойство ' map 'не существует для типа'Observable'.



Я использую Angular 2.0.0-beta.17.

598   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 of rxjs/Rx is blacklisted in Angular 5.2

устранение: Решил ее с помощью импорт только тех операторов, которые мне нужны. Пример следующий:

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, ошибка будет устранена.

npm install rxjs@6 rxjs-compat@6 --save

просто установить rxjs-compat решение проблемы

npm i rxjs-compat --save-dev

и импортировать его, как показано ниже

import 'rxjs/Rx';

выполнить npm install --save rxjs-compat@6

и импорт rxjs / Rx в сервисе.ТС

импорт 'rxjs/Rx'; Ошибка решена для меня.

Comments

    Ничего не найдено.