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.
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.
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.
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';
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';
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
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';
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:
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.
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.
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.
il suffit d'installer rxjs-compat en tapant dans le terminal:
npm install --save rxjs-compat
puis importer:
import 'rxjs/Rx';
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.
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));
}
}
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;
})
})
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.
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';
Run npm install --save rxjs-compat@6
et importer des rxjs/Rx en Service.ts
importer "RxJS / Rx"; Erreur résolue pour moi.