web-dev-qa-db-ja.com

配列から観察可能

現在、Angular2とObservableオブジェクトに問題があります。

サービスを呼び出すコンポーネントがあります。APIにリンクされている実際のコンポーネントと、偽のサービスです。

APIにリンクされたサービスは正常に機能しますが、偽のサービスを使用する場合、Observableオブジェクトから配列を返したいのですが、このエラーが発生します。「Observable_1.Observable.fromArrayは関数ではありません」

ここに私のコードがあります:

コンポーネント

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

  this.races = newRaces;
}); 

実際のサービス:

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

偽のサービス:

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

Plzを手伝ってもらえますか?

乾杯

13
intuix

それは...

Rx.Observable.from(yourarray)

fromArrayは非推奨のようです

23
ade jones

Observable.fromArray()はRxJSバージョン5で削除され、from()を使用します

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

RxJS 6用に回答を更新する必要があります

import {from} from 'rxjs';

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

私のコードでいくつかの研究をした後、私は同じ問題を抱えていました...

インポートしました:

import {Observable} from "rxjs/Observable";

の代わりに:

import {Observable} from "rxjs/Rx";

それが他の誰かを助けることを願っています。

4
vincent_chapron

私は同じ問題を抱えていたので、このインポートステートメントをコンポーネントに追加する必要がありました。

import 'rxjs/add/observable/fromArray';

参照しているRx.jsファイルでfromArrayを検索して追加するインポートを見つけました(プロジェクト内に異なるバージョンのファイルがある可能性があるため注意してください)。

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

同じ問題がありました。 fromArrayが非推奨になったため、これを取得していると思われます。

rxjs/Observableをインポートして、不要なrxjsの他の部分をインポートしないようにします

import { Observable } from 'rxjs/Observable';

fromArrayは廃止されました。代わりに使用

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

これを試して:
import {from} from 'rxjs/observable/from';
...
const promiseSource = from(new Promise(resolve => resolve( 'Hello World!'))); https://learnrxjs.io/operators/creation/from.html

0
Flavio Marques