Ich habe gerade ein Upgrade von Angular 2 Beta16 auf Beta17 durchgeführt , was wiederum RXJS 5.0.0-Beta.6 erfordert. (Änderungsprotokoll hier: https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28 ) In der Beta16 funktionierte alles in Bezug auf die Observable / Map-Funktionalität gut. Die folgenden Fehler sind nach dem Upgrade aufgetreten und treten auf, wenn Typoskript versucht, sie zu transpilieren:
- Die Eigenschaft 'map' existiert nicht für den Typ 'Observable' (überall dort, wo ich eine Karte mit einem Observable verwendet habe).
- c: /path/node_modules/rxjs/add/operator/map.d.ts (2,16): Fehler TS2435: Umgebungsmodule können nicht in anderen Modulen oder Namespaces verschachtelt werden.
- c: /path/node_modules/rxjs/add/operator/map.d.ts (2,16): Fehler TS2436: Die Umgebungsmoduldeklaration kann keinen relativen Modulnamen angeben.
Ich habe diese Frage / Antwort gesehen, aber sie löst das Problem nicht: Beobachtbare Fehler mit Angular2 Beta.12 und RxJs 5 Beta.3
Meine appBoot.ts sieht so aus (ich verweise bereits auf rxjs / map):
///<reference path="./../node_modules/angular2/typings/browser.d.ts"/>
import {bootstrap} from "angular2/platform/browser";
import {ROUTER_PROVIDERS} from 'angular2/router';
import {HTTP_PROVIDERS} from 'angular2/http';
[stuff]
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
import {enableProdMode} from 'angular2/core';
import { Title } from 'angular2/platform/browser';
//enableProdMode();
bootstrap(AppDesktopComponent, [
ROUTER_PROVIDERS,
HTTP_PROVIDERS,
Title
]);
Hat jemand eine Ahnung, was drunter und drüber geht?
typescript
angular
rxjs
brando
quelle
quelle
Antworten:
Sie müssen den
map
Operator importieren :quelle
import { map } from 'rxjs/operators'
, aber eine andere Antwort hat mehr Details.Ich habe mein gulp-typescript-Plugin auf die neueste Version (2.13.0) aktualisiert und jetzt wird es problemlos kompiliert.
UPDATE 1: Ich habe zuvor gulp-typescript Version 2.12.0 verwendet
UPDATE 2: Wenn Sie ein Upgrade auf Angular 2.0.0-rc.1 durchführen, müssen Sie in Ihrer appBoot.ts-Datei Folgendes tun:
Wichtig ist der Verweis auf es6-shim / index.d.ts
Dies setzt voraus, dass Sie die es6-shim-Typisierungen wie hier gezeigt installiert haben:
Weitere Informationen zu den von Angular installierten Typisierungen finden Sie hier: https://angular.io/docs/ts/latest/guide/typescript-configuration.html#!#typings
quelle
map
einen Hinweis für Benutzer mit ähnlichen Problemen hinzugefügt. Vielen Dank :)import 'rxjs/Rx';
// Lädt alle FunktionenRxjs 5.5 "Eigenschaft 'map' existiert nicht für den Typ Observable.
Das Problem hing mit der Tatsache zusammen, dass Sie Pipe um alle Operatoren hinzufügen müssen.
Ändere das,
dazu
Und
Karte wie folgt importieren,
Es wird Ihre Probleme lösen.
quelle
In meinem Fall würde es nicht ausreichen, nur Karte und Versprechen aufzunehmen:
Ich habe dieses Problem gelöst, indem ich mehrere rxjs-Komponenten importiert habe, wie in der offiziellen Dokumentation empfohlen:
1) Importieren Sie Anweisungen in eine Datei app / rxjs-operator.ts:
2) Importieren Sie den rxjs-Operator selbst in Ihren Dienst:
quelle
Wenn dieser Fehler in VS2015 auftritt, wird hier ein Github-Problem und eine Problemumgehung erwähnt:
https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507
Dies hat mir geholfen, das
property map does not exist on observable
Problem zu beheben . Stellen Sie außerdem sicher, dass Sie eine Typoskriptversion über 1.8.2 habenquelle
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript\typescriptServices.js
durch typescriptService funktionierte für VS 15. ( Neustart vs nach dem Ersetzen der Datei )DIE ENDGÜLTIGE ANTWORT FÜR DIE, DIE ANGULAR 6 VERWENDEN:
Fügen Sie den folgenden Befehl in Ihre * .service.ts- Datei ein "
Ich benutze Windows 10;
angle6 mit Typoskript V 2.3.4.0
quelle
&
npm install rxjs@6 rxjs-compat@6 --save
arbeitete für mich
quelle
In Angular 2x
In example.component.ts
In example.component.html
In Angular 5x oder Angular 6x:
In example.component.ts
In example.component.html
quelle
UPDATE 29. September 2016 für Angular 2.0 Final & VS 2015
Die Problemumgehung wird nicht mehr benötigt. Um dies zu beheben, müssen Sie lediglich TypeScript Version 2.0.3 installieren .
Korrektur aus der Bearbeitung dieses Github-Problemkommentars .
quelle
Soweit ich weiß, liegt es am
rxjs
letzten Update. Sie haben einige Operatoren und Syntax geändert. Danach sollten wir solcherx
Operatoren importierenimport { map } from "rxjs/operators";
an Stelle von
Und wir müssen Pipe um alle Operatoren wie diesen hinzufügen
this.myObservable().pipe(map(data => {}))
Quelle ist hier
quelle
Wie Justin Scofield in seiner Antwort vorgeschlagen hat, reicht es für die neueste Version von Angular 5 und für Angular 6 am 1. Juni 2018 einfach
import 'rxjs/add/operator/map';
nicht aus, den TS-Fehler zu beseitigen:[ts] Property 'map' does not exist on type 'Observable<Object>'.
Führen Sie den folgenden Befehl aus, um die erforderlichen Abhängigkeiten zu installieren:
npm install rxjs@6 rxjs-compat@6 --save
Danach wird dermap
Importabhängigkeitsfehler behoben!quelle
Ich war mit dem ähnlichen Fehler konfrontiert. Es wurde gelöst, als ich diese drei Dinge tat:
Update auf die neuesten rxjs:
Karte importieren und versprechen:
Neue Importanweisung hinzugefügt:
quelle
Es sieht so aus, als ob das neueste RxJS Typoskript 1.8 erfordert, sodass Typoskript 1.7 den obigen Fehler meldet.
Ich habe dieses Problem durch ein Upgrade auf die neueste Typoskriptversion gelöst.
quelle
tsc
von Befehl verwenden, überprüfen Sie bittetsc -v
;-) Die Verwendung von "Skripten" ist eine noch bessere Idee, siehe stackoverflow.com/a/37034227/478584Ähnliche Fehlermeldungen werden beim Übergang von Version 5 zu Version 6 angezeigt. Hier finden Sie eine Antwort auf die Änderung von rxjs-6.
Importieren Sie die einzelnen Operatoren und verwenden Sie sie
pipe
anstelle der Verkettung.quelle
Wenn Sie angle4 verwenden, verwenden Sie den folgenden Import. es sollte funktionieren .
'rxjs / add / operator / map' importieren;
Wenn Sie angle5 / 6 verwenden, verwenden Sie map with pipe und importieren Sie unter eins
{map} von "rxjs / operator" importieren;
quelle
Die Eigenschaft 'map' existiert nicht für den Winkel 'Observable Response' des Typs 6
Lösung: Aktualisieren Sie die Angular CLI und die Core-Version
quelle