web-dev-qa-db-fra.com

Observable fromArray

J'ai actuellement un problème avec Angular2 et Observable object.

J'ai un composant qui appelle un service: un vrai lié à un api et un faux.

Le service lié à l'API fonctionne bien, mais lorsque j'utilise le faux, je souhaite renvoyer un objet Array from Observable, mais j'ai l'erreur suivante: "Observable_1.Observable.fromArray n'est pas une fonction"

Voici mon code:

Composant:

this._raceService.list().subscribe(newRaces => { 

  this.races = newRaces;
}); 

Service réel: 

list(){ return this._http.get('http://dev.backend.com/api.php', options).map(res => res.json()); }

Faux service:

list() { return Observable.fromArray([{ name: 'London' }]); }

Pouvez-vous m'aider s'il vous plaît?

À votre santé

11
intuix

cela devrait-il être ... 

Rx.Observable.from(yourarray)

fromArray semble être obsolète

22
ade jones

Observable.fromArray() a été supprimé dans RxJS version 5, utilisez from()

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/from';
...
Observable.from([1, 2, 3, 4]);
11
Organic

La réponse doit être mise à jour pour RxJS 6, elle est maintenant

import {from} from 'rxjs';

const observable = from([ { a: 1, b: 2 } ]);
6
Jaime Cham

J'ai eu le même problème, après quelques recherches dans mon code ...

J'ai importé:

import {Observable} from "rxjs/Observable";

Au lieu de:

import {Observable} from "rxjs/Rx";

J'espère que cela peut aider quelqu'un d'autre.

3
vincent_chapron

J'ai eu le même problème et j'ai dû ajouter cette déclaration d'importation dans mon composant:

import 'rxjs/add/observable/fromArray';

J'ai trouvé l'importation à ajouter en cherchant fromArray dans le fichier Rx.js que je faisais référence (faites attention, il peut y avoir différentes versions du fichier dans votre projet):

System.register("rxjs/add/observable/fromArray", ["rxjs/Observable", "rxjs/observable/ArrayObservable"], true, function(require, exports, module) {
  // ...
});
3
Gloopy

J'ai eu le même problème. Je pense que vous l’obtenez peut-être parce que fromArray est obsolète.

importer rxjs/Observable pour éviter d'importer d'autres parties de rxjs dont vous n'avez pas besoin

import { Observable } from 'rxjs/Observable';

fromArray est obsolète. Utilisez plutôt

list() { return Observable.from([{ name: 'London' }]); }
3
swoodruff

essaye ça:
import {from} de 'rxjs/observable/from';
...
const promiseSource = from (nouvelle promesse (resol = = resol ('Hello World!')))); https://learnrxjs.io/operators/creation/from.html

0
Flavio Marques