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
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é.
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);
});
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';
essayer
import {Observable} from 'rxjs/Observable';
getData() : Observable<any> {
this.http.get(this.dataUrl)
.map(response => response.json())
.subscribe(result => console.log(result));
}
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';