2

https://update.angular.ioの指示に従って、Angular アプリケーションをバージョン 5.2 から 6.0 にアップグレードしました。

「rxjs-5-to-6-migrate」移行のため、Angular アプリケーションがビルドされません。

bla.ts のエラー: エラー TS2339: プロパティ 'map' がタイプ 'Observable' に存在しません。

次のインポートがあります。

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

このようにインポートを変更すると、機能します:

import { Observable } from 'rxjs/observable';
import 'rxjs/Rx';

しかし、理由がわかりません...すべての演算子をインポートするのではなく、明示的なインポートを使用したいのです。


更新:いくつかの回答が指摘したように、演算子を使用できるようにするにはパイプを使用する必要があります。オペレーターをオブザーバブルにチェーンできると思っていたので、これは私の問題でした。

古いスタイル:

import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

this.http.get('/api/appsettings/get').map(data => { return true; }).catch(() => { return Observable.of(false); });

新しいスタイル

import { of,  Observable } from 'rxjs';
import { catchError, map } from 'rxjs/operators';

this.http.get('/api/appsettings/get').pipe(map(data => { return true; }), catchError(() => { return of(false); }));
4

3 に答える 3

1

インポートは次のようになります。

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

そして、あなたは使用する必要があります使用することはできませObservable.ofof()

そして、演算子を次の.pipeようにラップする必要があります。

.pipe(
     finalize(() => { this.isBusy = false; }),
     take(1),
     map(DATA => DATA.MESSAGEID)
)
于 2018-05-18T13:37:24.717 に答える