Voici mon code.
import { injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/catch';
@Injectable({
providedIn: 'root'
})
export class PostsService {
private url = 'https://jsonplaceholder.typicode.com/posts';
constructor(private http : Http ) { }
getPosts {
return this.http.get(this.url);
}
deletePost(id) {
return this.http.get(this.url + '/' + id);
}
}
Je fais ce code sur mon PC, il fonctionne mais ne fonctionne pas sur un ordinateur portable. Cela semble drôle mais c'est vrai.
C'est la structure de mon projet
La nouvelle version de rxjs ne prend plus en charge les importations uniques, essayez plutôt:
import { catchError } from 'rxjs/operators';
Dans Angular 6, les importations RXJS ont été modifiées, les opérateurs doivent être "enveloppés" dans pipe () et écrits sans point au début (était: .map, .retry, .catch; now: map, retry et catchError ):
import { catchError, map } from 'rxjs/operators';
et utilisez pipe ()
getPosts() {
// pack in "pipe()"
return this.http.get(this.url).pipe(
// eg. "map" without a dot before
map(data => {
return data;
}),
// "catchError" instead "catch"
catchError(error => {
return Observable.throw('Something went wrong ;)');
})
);
}
"Je fais ce code sur mon PC, il fonctionne mais ne fonctionne pas sur un ordinateur portable" - sur l'ordinateur portable, vous disposez d'une version plus récente de angular cli. Il génère un angle 6 avec de nouvelles importations. Cordialement
dans angular 7, voici comment gérer de manière propre la requête http get
import {Injectable} from '@angular/core';
import {HttpClient} from '@angular/common/http';
import {Observable, throwError} from 'rxjs';
import {catchError, retry} from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class EmployeeService {
constructor(private _http: HttpClient) {
}
public getPosts(): Observable<Post[]> {
return this._http.get(<URL>).pipe(
retry(1), catchError(error => {
return throwError(error.message);
}));
}
}
try this and will work!...
import { Injectable } from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import { catchError } from 'rxjs/operators';
import { Observable, throwError } from 'rxjs';
.get(<URL>).pipe
(
catchError((error: HttpErrorResponse) =>{
return throwError(error.message || 'server error');
})
)