web-dev-qa-db-fra.com

la carte n'est pas une fonction (Rxjs) bien que l'importation

il y avait beaucoup de questions sur "la carte n'est pas une fonction", mais presque Tout le monde n'a pas importé la bibliothèque rxjs 

Dans mon cas, je fais l'importation, mais l'erreur est toujours là.

Je travaille avec Ionic 2 et voici à quoi ressemblent mes dépendances package.json:

"dependencies": {
"@angular/common": "2.0.0",
"@angular/compiler": "2.0.0",
"@angular/compiler-cli": "0.6.2",
"@angular/core": "2.0.0",
"@angular/forms": "2.0.0",
"@angular/http": "2.0.0",
"@angular/platform-browser": "2.0.0",
"@angular/platform-browser-dynamic": "2.0.0",
"@angular/platform-server": "2.0.0",
"@ionic/storage": "1.0.3",
"ionic-angular": "2.0.0-rc.1",
"ionic-native": "2.2.3",
"ionicons": "3.0.0",
"rxjs": "5.0.0-beta.12"
}  

C'est ainsi que je crée mon service:

import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions, Response } from '@angular/http';
import { Observable } from 'rxjs';
import 'rxjs/add/operator/map';

@Injectable()
export class LoginService {
    constructor(private http: Http) {

    }

    private dataUrl = '/node';

    getData() : any {
        this.http.get(this.dataUrl)
            .map(response => response.json())
            .subscribe(result => console.log(result));
    }
}

J'ai également essayé de réinstaller le module rxjs, mais toujours sans succès. Peut-être est-ce incompatible avec ionic 2 ou la version angulaire actuelle?

Que pensez-vous les gars?

À votre santé,

Andrej

12
Andrej Tihonov

J'ai eu le même problème.

J'utilise jspm avec system.js. Pour moi, lorsque j'ai mis mon système à niveau à l'aide de jspm update angular2-http requis [email protected], mais [email protected] requis [email protected], qui correspond à ce à quoi "rxjs" a été associé. Je suppose que c'était la dernière version? J'ai découvert tout cela en inspectant le fichier config.js créé par jspm.

Donc, apparemment, quand j'ai utilisé la déclaration ...

import 'rxjs/add/operator/map';

... il ajoutait mappage à la version 5.0.0-beta.12 de rxjs qui est not la version utilisée par http. J'ai dû changer de ligne pour ...

import 'npm:[email protected]/add/operator/map'; 

... et puis ça a marché.

10
crowmagnumb

Nous sommes en 2018… .. Je rencontrais le même problème. C'est ce qui a fonctionné pour moi:

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

this.http.get(url)
.pipe(map(r => r.json()))
.subscribe(resp => {
  resp = resp.json();
  console.log(resp);
});
2
Deji Adesoga

créer le fichier rxjs-operators.ts

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

et appelez-le si nécessaire. 

import './rxjs-operators';
2
ahankendi

essayer 

    import {Observable} from 'rxjs/Observable';

getData() : Observable<any> {
        this.http.get(this.dataUrl)
            .map(response => response.json())
            .subscribe(result => console.log(result));
    }
1
deek

essayer

import {Injectable} depuis '@ angular/core'; import {Http, Réponse, en-têtes, URLSearchParams, RequestOptions} depuis '@ angular/http'; import {Observable} depuis 'rxjs/Observable' ; import 'rxjs/Rx';

0
user3317774