25

Я пытаюсь вызвать апи от углового, но напротив вопросасвойство «карта» не существует на типе «Наблюдаемые <Response>»

Свойство «карта» не существует на типе «Наблюдаемая»

захожу через эту ссылку, но проблема остается. Angular 2 beta.17: Property 'map' does not exist on type 'Observable<Response>'. Я использую Угловое 2.0.0-beta.17

ответ

78

Вы должны импортировать map оператора:

import 'rxjs/add/operator/map' 

или, более общо:

import 'rxjs/Rx'; 
+0

после того, как я импортирую его. он показывает больше ошибок –

+0

Вам не повезло :-(Каковы эти ошибки? –

+0

Недопустимое имя модуля в дополнении, модуль '../../Observable' не найден.\t Недвижимость 'map' не существует по типу 'Наблюдаемый '. –

3

В моем случае это не было бы достаточно, чтобы включают только карту и обещают:

import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/toPromise'; 

Я решил эту проблему, импортировав несколько компонентов rxjs а official documentation рекомендует:

1) Импорт заявления в одном приложении файл/rxjs-operators.ts:

// 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'; 
+0

Я считаю его неправильным включать rxjs-операторов в каждую службу. Он должен быть включен только в app.module.ts но, к сожалению, ng test выдает ошибку, если операторы не импортируются в определенные места –

19

Я имел та же проблема с угловым 2.0.1, потому что я импортировал наблюдаемый от

import { Observable } from 'rxjs/Observable'; 

I решить мою проблему на импорт Наблюдаемое с этого пути вместо

import { Observable } from 'rxjs'; 
+2

, за исключением того, что теперь мы получаем ошибку черного списка –

+0

Эта практика считается не связанной с пакетом, поскольку этот оператор импортирует все операторы «Observable» (в том числе те, которые вы наняли 't use) в комплект. Вместо этого вы должны импортировать каждого оператора отдельно. Я рекомендую использовать «lettable operator», который был введен в RxJS v5.5, чтобы поддерживать лучшее дрожание деревьев. –

2

Я была такая же проблема, я использую Visual Studio 2015, который имел более старую версию машинописи.

После обновления расширения проблема была решена.

Download Link

+0

Это неочевидный ответ, и тот, который работал для меня - спасибо. –

2

Я использую Угловой 5.2 и когда я использую import 'rxjs/Rx'; он бросает мне следующую ошибку ворса: TSLint: Этот импорт в черном списке, импортировать подмодуль вместо (импорт-черный список)

Смотрите скриншот ниже: Import of rxjs/Rx is blacklisted in Angular 5.2

РЕШЕНИЕ: Решил его импортировать только те операторы, которые мне были нужны. Пример:

import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/catch'; 

Таким образом, исправление будет заключаться только в том, чтобы импортировать только необходимые операторы.

+0

Я рад, что прочел все донизу. Возможно, я должен начать использовать TSLint. – AndrewBenjamin

Смежные вопросы