Propriété "carte" n'existe pas sur le type 'Observables '

j'essaie D'appeler une API D'Angular mais j'obtiens cette erreur:

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

les réponses à cette question similaire n'ont pas résolu mon problème: Angular 2 beta.17: la Propriété 'map' n'existe pas sur le type " Observables' .

j'utilise un angle 2.0.0-beta.17.

63
demandé sur Jon Schneider 2016-05-13 14:22:36

17 réponses

vous devez importer l'opérateur map :

import 'rxjs/add/operator/map'

ou plus généralement:

import 'rxjs/Rx';

avis: pour les versions de RxJS 6.x.x et plus, vous devrez utiliser des opérateurs pipables comme indiqué dans l'extrait de code ci-dessous:

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);
    });
  }
}

ceci est causé par l'équipe de RxJS supprimant le support pour l'utilisation Voir le breaking changes dans changelog de RxJS pour plus d'info.

dans le changelog:

operators : les opérateurs Pipables doivent maintenant être importés de rxjs comme suit: import { map, filter, switchMap } from 'rxjs/operators'; . Pas d'importations.

138
répondu Thierry Templier 2018-08-03 15:50:48

revisitant ceci parce que ma solution n'est pas listée ici.

j'exécute Angular 6 avec rxjs 6.0 et j'ai rencontré cette erreur.

voici ce que j'ai fait pour le réparer:

j'ai changé

map((response: any) => response.json())

à être tout simplement:

.pipe(map((response: any) => response.json()));

j'ai trouvé la solution ici:

https://github.com/angular/angular/issues/15548#issuecomment-387009186

Espère que ça aide.

65
répondu Nick Hodges 2018-05-07 15:47:09

j'ai eu le même problème avec Angular 2.0.1 parce que j'importais Observable de

import { Observable } from 'rxjs/Observable';

je résoudre mon problème sur l'importation Observables à partir de ce chemin au lieu de

import { Observable } from 'rxjs';
24
répondu S.Galarneau 2016-11-21 20:44:21

il suffit d'écrire cette commande dans vs Code terminal de votre projet et redémarrez le projet.

npm install rxjs-compat

vous devez importer l'opérateur map en écrivant ceci:

import 'rxjs/add/operator/map';
20
répondu Karan Raiyani 2018-07-26 10:50:11

dans RxJS 6 l'utilisation de l'opérateur de carte a été changée maintenant, vous devez Utiliser de la sorte.

import { map } from 'rxjs/operators';
myObservable
  .pipe(map(data => data * 2))
  .subscribe(...);

pour référence https://www.academind.com/learn/javascript/rxjs-6-what-changed/#operators-update-path

11
répondu Hari Prasad Sharma 2018-06-04 05:48:33

dans mon cas, il ne suffirait pas d'inclure seulement la carte et la promesse:

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

j'ai résolu ce problème en important plusieurs composants rxjs comme documentation officielle recommande:

1) déclarations D'importation dans un app/RxJS-opérateurs.fichier 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) Importation RxJS-opérateur lui - même à votre service:

// Add the RxJS Observable operators we need in this app.
import './rxjs-operators';
5
répondu Alex Valchuk 2016-09-23 07:35:51

J'utilise L'angle 5.2 et quand j'utilise import 'rxjs/Rx'; il me jette l'erreur de peluche suivante: TSLint: cette importation est inscrite sur la liste noire, importez plutôt un sous-module (import-blacklist)

Voir la capture d'écran ci-dessous: Import of rxjs/Rx is blacklisted in Angular 5.2

SOLUTION: Résolu par en n'important que les opérateurs dont j'avais besoin . Exemple:

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

Donc, la solution serait d'importer uniquement les opérateurs.

4
répondu Devner 2018-02-02 05:36:54

j'ai eu le même problème, J'ai utilisé Visual studio 2015 qui avait une version plus ancienne de dactylographié.

après la mise à niveau de l'extension, le problème a été résolu.

Lien De Téléchargement

3
répondu Naveen 2017-02-22 02:27:22

j'ai essayé toutes les réponses possibles posté ci-dessus n'a pas fonctionné,

Je l'ai résolu en redémarrant simplement mon IDE i.e., Visual Studio Code

Peut-il aider quelqu'un.

3
répondu Shylendra Madda 2018-06-02 17:39:27

il suffit d'installer rxjs-compat en tapant dans le terminal:

npm install --save rxjs-compat

puis importer:

import 'rxjs/Rx';
2
répondu Amir.S 2018-09-13 09:31:13

pour tous les utilisateurs de linux qui ont ce problème, vérifiez si le dossier RxJS-compat est verrouillé. J'ai eu ce même problème et je suis allé dans le terminal, j'ai utilisé le sudo su pour donner la permission à l'ensemble du dossier RxJS-compat et il a été corrigé. C'est en supposant que vous avez importé

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

dans le projet.ts fichier où se trouve l'original .carte erreur s'est produite.

1
répondu JavaJunior 2018-07-06 09:24:23

moi aussi j'ai fait face à la même erreur. Une solution qui a fonctionné pour moi était d'ajouter les lignes suivantes dans votre service .ts fichier au lieu de de import 'rxjs/add/operator/map' :

import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

pour un exemple, mon app.service.ts après le débogage était comme,

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));
    }
}
1
répondu Steffi Keran Rani J 2018-07-09 19:59:57

utilisez la fonction map dans la fonction pipe et cela résoudra votre problème. Vous pouvez consulter la documentation ici .

this.items = this.afs.collection('blalal').snapshotChanges().pipe(map(changes => {
  return changes.map(a => {
    const data = a.payload.doc.data() as Items;
    data.id = a.payload.doc.id;
    return data;
  })
})
0
répondu Mohammad Quanit 2018-07-17 10:57:51

si après avoir importé import 'RxJS/add/operator/map' ou import 'rxjs/Rx' aussi vous obtenez la même erreur puis redémarrez votre éditeur de code visual studio, l'erreur sera résolue.

0
répondu Chirag 2018-07-31 17:02:37

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

0
répondu Ajay Takur 2018-08-12 16:31:41

il suffit d'installer RxJS-compat pour résoudre le problème

npm i rxjs-compat --save-dev

et l'importer comme ci-dessous

import 'rxjs/Rx';
0
répondu Ankit Bhatia 2018-09-04 10:01:16

Run npm install --save rxjs-compat@6

et importer des rxjs/Rx en Service.ts

importer "RxJS / Rx"; Erreur résolue pour moi.

0
répondu Brahmmeswara Rao Palepu 2018-10-02 08:54:09