Модуль не найден: Ошибка: Не удается разрешить 'rxjs / add / operator / catch' в 'F: \ Angular \ HttpServices \ http-services \ src \ app' - PullRequest
0 голосов
/ 11 мая 2018

Вот мой код.

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);
    }
}

Я делаю этот код на своем ПК, он работает, но не работает на ноутбуке.Это кажется смешным, но это правда.
Это структура моего проекта

Ответы [ 5 ]

0 голосов
/ 06 января 2019

попробуй это и будет работать! ...

    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');    
                                                })
         )
0 голосов
/ 16 декабря 2018

в угловых 7, вот как обработать чистый запрос 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);
      }));
  }
}
0 голосов
/ 29 мая 2018

Новая версия rxjs больше не поддерживает одиночный импорт, вместо этого попробуйте:

import { catchError } from 'rxjs/operators';
0 голосов
/ 19 сентября 2018

В Angular 6 RXJS импорт был изменен, операторы должны быть «обернуты» в pipe () и записаны без точки в начале (было: .map, .retry, .catch; сейчас: вместо этого map, retry и catchErrorловушки):

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

и использовать 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 ;)');
      })
    );
  }

«Я делаю этот код на своем ПК, он работает, но не работает на ноутбуке» - на ноутбукеу вас более новая версия angular cli.Он генерирует угловые 6 с новым, другим импортом.Привет

0 голосов
/ 29 мая 2018

Почему бы вам не попробовать добавить "import 'rxjs / add / operator / catch';"(поставьте 's' и сделайте его оператором) вместо "import 'rxjs / add / operator / catch';"

...