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?
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:
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.
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.