web-dev-qa-db-ja.com

プロパティ「switchMap」はタイプ「Observable <User>」に存在しません

ObservableにswitchMap演算子を適用しようとすると、次のエラーメッセージが表示されます。

プロパティ「switchMap」がタイプ「Observable」に存在しません。

私は現在rxjsバージョン5.5.2を使用していますが、私のコンポーネントでは次のようにインポートしています:

import 'rxjs/operator/switchMap';

しかし、それでもコンパイルエラーが発生します。私は同様の質問を見て、これに対する適切な解決策、ここで問題になる可能性があるものについての提案を見つけていませんか?

get appUser$() : Observable<AppUser> {
  return this.user$
    .switchMap(user => {
      if (user) return this.userService.get(user.uid);

      return Observable.of(null);
    });    
}

画像: enter image description here

10
Kode_12

古い「パッチ」スタイルの演算子を使用している場合は、rxjs/add/operator/switchMapからインポートする必要があります。

import 'rxjs/add/operator/switchMap';

「pipable」演算子を備えたRxJS 5.5以降、'rxjs/operators'からインポートする必要があります。

import { switchMap } from 'rxjs/operators';
13
martin

Angular 6を使用していると思います。これは、RxJSの最新バージョンを使用していることを意味します。演算子を次のようにパイプする必要があります。

obs$.switchMap(() => { do stuff... });

への変更

obs$.pipe(switchMap(() => { do stuff... }));

編集:あなたの場合、オブザーバブルはthis.refreshTokenによって返されることに注意してください

this.refreshToken().pipe(switchMap(() => { do stuff... }));
10
subhajit biswas

Angular 6を使用している場合は、パイプを使用する必要があります

angular 6より前のバージョン、以下のコードは機能します

        this.route.params.switchMap((data: Passengers) => 
        this.passengerService.getPassenger(data.id))
        .subscribe((data: Passengers) =>  this.passenger = data);

ただし、In Angular 6の場合、演算子をパイプする必要があります

    this.route.params.pipe(switchMap((data: Passengers) => 
    this.passengerService.getPassenger(data.id)))
    .subscribe((data: Passengers) =>  this.passenger = data);
2
Sreejith Ms