webentwicklung-frage-antwort-db.com.de

Angular 7 - Fehler: 'rxjs hat kein exportiertes Mitglied' Observable '

Dies ist meine package.json Datei:

"dependencies": {
    "@angular/animations": "~7.1.0",
    "@angular/common": "~7.1.0",
    "@angular/compiler": "~7.1.0",
    "@angular/core": "~7.1.0",
    "@angular/forms": "~7.1.0",
    "@angular/material": "^7.1.1",
    "@angular/platform-browser": "~7.1.0",
    "@angular/platform-browser-dynamic": "~7.1.0",
    "@angular/router": "~7.1.0",
    "core-js": "^2.5.4",
    "ng2-opd-popup": "^1.1.21",
    "rxjs": "~6.3.3",
    "tslib": "^1.9.0",
    "zone.js": "~0.8.26"

service.ts dateicode wie folgt:

import { Injectable } from '@angular/core';
import { Http, Headers} from '@angular/http';
import 'rxjs/add/operator/map';
//import { Observable } from 'rxjs/Observable';
//import   'rxjs/add/observable';
import { Observable} from 'rxjs';
@Injectable({
  providedIn: 'root'
})
export class EmpService {
  employees=[];
  constructor(private _http: Http) { }
  addEmployee(info){
    return this._http.post("http://localhost/data/insert.php",info)
      .map(()=>"");
  }
}

Ich habe folgende Fehlermeldung erhalten:

rxjs hat kein exportiertes Mitglied 'Observable'

Gibt es irgendwelche Probleme mit Versionen?

1
Mirshad

Ihr Code ist in einer alten eckigen Version geschrieben. Änderungen erforderlich sind

1. Use of Http is deprecated
2. importing map & Observable


import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import { map } from 'rxjs/operators';

@Injectable({
  providedIn: 'root'
})
export class EmpService {
  employees=[];
  constructor(private _http: HttpClient) { }
  addEmployee(info){
    return this._http.post("http://localhost/data/insert.php",info)
      .pipe(
        map(() => '' )
      )

  }
}

verweisen:

1
rijin

Denken Sie, dass Ihr Problem mit einem falschen Paket zusammenhängt, da die Art und Weise, wie Sie es tun, richtig ist. Die korrekte Verwendung von Observable in Angular 7 erfolgt nach import { Observable } from 'rxjs';

Ich bin mir nicht sicher, ob Sie ein Upgrade von Angular 6 auf Upgrade-Dokumente durchgeführt haben:

Wechseln Sie von HttpModule und dem Http-Dienst zu HttpClientModule und dem HttpClient-Dienst. HttpClient vereinfacht die Standardergonomie (Sie müssen keine Zuordnung mehr zu json vornehmen) und unterstützt jetzt typisierte Rückgabewerte und Interceptors. Lesen Sie mehr auf angular.io

Entfernen Sie veraltete RxJS 6-Funktionen mithilfe der Regeln für die automatische Aktualisierung von rxjs-tslint

Für die meisten Anwendungen bedeutet dies, dass die folgenden zwei Befehle ausgeführt werden:

npm installiere -g rxjs-tslint rxjs-5-nach-6-migriere -p src/tsconfig.app.json

Sobald Sie und alle Ihre Abhängigkeiten auf RxJS 6 aktualisiert haben, entfernen Sie rxjs-compat.

Nachdem dies behoben wurde, führen Sie npm install aus

Eine andere Möglichkeit ist zwischengespeicherter node_modules, der entfernt werden kann: git rm -r --cached node_modules Möglicherweise haben Sie einige. Führen Sie nach der Bereinigung einen npm install aus, und Sie sollten die richtigen Pakete haben.

0
dream88

Um mit rxjs6 und angle 7 kompatibel zu sein, müssen Sie Folgendes ersetzen:

import { Http, Headers } from '@angular/http';
import 'rxjs/add/operator/map';

durch:

import { map } from 'rxjs/operators';
import { HttpClient, HttpHeaders } from '@angular/common/http';

Und importiere beobachtbar so:

import { Observable } from 'rxjs';

nicht so:

import { Observable } from 'rxjs/Observable';
// or import   'rxjs/add/observable';

Möglicherweise müssen Sie den Ordner node_modules löschen und npm install starten, da anscheinend einige falsche Pakete enthalten sind.

0
veben