web-dev-qa-db-fra.com

La propriété 'switchMap' n'existe pas sur le type 'Observable <Utilisateur>'

J'ai reçu le message d'erreur suivant lorsque j'essaie d'appliquer l'opérateur switchMap à mon observable:

La propriété 'switchMap' n'existe pas sur le type 'Observable'.

J'utilise actuellement rxjs version 5.5.2, et dans mon composant, je l'ai importé comme ceci:

import 'rxjs/operator/switchMap';

Cependant, je reçois toujours une erreur de compilation. J'ai examiné des questions similaires et je n'ai pas trouvé de solution appropriée à cela, des suggestions sur ce qui pourrait être le problème ici?

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

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

Image: enter image description here

10
Kode_12

Vous devez importer à partir de rxjs/add/operator/switchMap si vous utilisez l'ancien style d'opérateur "patch":

import 'rxjs/add/operator/switchMap';

Depuis RxJS 5.5 avec les opérateurs "pipable", vous devez importer de 'rxjs/operators':

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

Je suppose que vous utilisez Angular 6, ce qui signifie que vous utilisez la dernière version de RxJS. Vous devez diriger vos opérateurs comme

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

changer pour

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

Edit: gardez à l'esprit que dans votre cas, votre observable est retourné par this.refreshToken

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

Je pense que si vous utilisez Angular 6 alors vous devez utiliser pipe

Version inférieure à angular 6, le code ci-dessous fonctionnera

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

Mais pour In Angular 6, vous devez diriger vos opérateurs

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