Observable.lancer le remplacement dans rxjs 5.5.2

Je migre vers rxjs@5.5.2 et utilise des opérateurs lettable... Je mets également à jour les méthodes statiques Observable. Je me demande quelle est la contrepartie de Observable.throw et import 'rxjs/add/observable/throw';.

Dois-je importer laid _throw?

import { _throw } from 'rxjs/observable/throw';

Ou il y a un meilleur moyen. Honnêtement, j'ai aimé les méthodes statiques sur Observable, et maintenant il semble que toutes les méthodes de création statiques comme of, from doit être importé de rxjs/observable/<methodName> ?

25
demandé sur dragonfly 2017-11-03 17:00:41

4 réponses

Je reçois toujours ma tête autour de 5.5 mais il semble que maintenant au lieu d'importer throw use ErrorObservable.

// import { _throw } from 'rxjs/observable/throw';
import { ErrorObservable } from 'rxjs/observable/ErrorObservable';

ErrorObservable.create('error');

De ce guide Il semble que ce soit _throw pour éviter un conflit de mots clés (le reste de la vidéo est bon pour commencer avec 5.5)

24
répondu JayChase 2017-11-26 12:10:02

Oui _throw est correct (cela fera exactement ce que jaychase a écrit mais est moins de code). Vous faites la même chose avec of:

import {of} from 'rxjs/observable/of';
import {_throw} from 'rxjs/observable/throw';

// ...
   // ...
   if (result) {
       return of(result as T);
   } else {
       return _throw('error');
   }
}
9
répondu Mick 2017-12-03 15:26:26

Dans la suite de la réponse de Mick, dans la version rxjs 6 _thow est remplacé par throwError

 import {Observable, throwError} from 'rxjs'; 

Guide De Migration RxJS

9
répondu bleuscyther 2018-07-05 00:07:54

Pour angulaire 5 et supérieur:

import{Http} from '@angular/http';
import {HttpClient,HttpResponse,HttpErrorResponse  } from '@angular/common/http';
import { Injectable} from '@angular/core'
import {Employee} from './employee';

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


@Injectable() 
export class employeeService{
constructor(private _http:Http){  }
 getEmployees():Observable<Employee[]>{
    return this._http.get('YOUR URL')
                     .pipe(
                         map((res: Response) => res.json()),
                         catchError(this.handleError)
                        );
                     //.pipe(catchError(this.handleError));
 }
 handleError(error:HttpErrorResponse){
    console.log(error);
    return throwError(error.message);
 }    
}
1
répondu srinivassree 2018-08-01 10:29:03