Je viens de passer d'Angular 2 beta16 à beta17 , qui à son tour nécessite rxjs 5.0.0-beta.6. (Changelog ici: https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28 ) En beta16 tout fonctionnait bien en ce qui concerne la fonctionnalité Observable / map. Les erreurs suivantes sont apparues après la mise à niveau et se produisent lorsque des tentatives de transcription sont dactylographiées:
- La propriété 'map' n'existe pas sur le type 'Observable' (partout où j'ai utilisé map avec un observable)
- c: /path/node_modules/rxjs/add/operator/map.d.ts (2,16): erreur TS2435: les modules ambiants ne peuvent pas être imbriqués dans d'autres modules ou espaces de noms.
- c: /path/node_modules/rxjs/add/operator/map.d.ts (2,16): erreur TS2436: la déclaration du module ambiant ne peut pas spécifier un nom de module relatif.
J'ai vu cette question / réponse mais cela ne résout pas le problème: Erreurs observables avec Angular2 beta.12 et RxJs 5 beta.3
Mon appBoot.ts ressemble à ceci (je fais déjà référence à 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
]);
Quelqu'un at-il une idée de ce qui se passe mal?
typescript
angular
rxjs
brando
la source
la source
Réponses:
Vous devez importer l'
map
opérateur:la source
import { map } from 'rxjs/operators'
, mais une autre réponse a plus de détails.J'ai mis à jour mon plugin gulp-typescript vers la dernière version (2.13.0) et maintenant il compile sans accroc.
MISE À JOUR 1: J'utilisais auparavant la version 2.12.0 de gulp-typescript
MISE À JOUR 2: Si vous effectuez une mise à niveau vers Angular 2.0.0-rc.1, vous devez effectuer les opérations suivantes dans votre fichier appBoot.ts:
L'important étant la référence à es6-shim / index.d.ts
Cela suppose que vous avez installé les typages es6-shim comme indiqué ici:
Plus d'informations sur les typages installés à partir d'Angular ici: https://angular.io/docs/ts/latest/guide/typescript-configuration.html#!#typings
la source
map
message d'erreur pour inclure une note pour les utilisateurs ayant des problèmes similaires. Merci beaucoup :)import 'rxjs/Rx';
// Charge toutes les fonctionnalitésRxjs 5.5 «La propriété 'map' n'existe pas sur le type Observable.
Le problème était lié au fait que vous devez ajouter un tuyau autour de tous les opérateurs.
Change ça,
pour ça
Et
Importez une carte comme celle-ci,
Cela résoudra vos problèmes.
la source
Dans mon cas, il ne suffirait pas d'inclure uniquement la carte et la promesse:
J'ai résolu ce problème en important plusieurs composants rxjs comme le recommande la documentation officielle :
1) Importez des instructions dans un fichier app / rxjs-operators.ts:
2) Importez rxjs-operator lui-même dans votre service:
la source
Si vous rencontrez cette erreur dans VS2015, il y a un problème de github et une solution de contournement mentionnés ici:
https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507
Cela m'a aidé à résoudre le
property map does not exist on observable
problème. De plus, assurez-vous d'avoir une version dactylographiée supérieure à 1.8.2la source
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript\typescriptServices.js
par typescriptService a fonctionné pour VS 15. ( redémarrage vs après remplacement du fichier )LA RÉPONSE FINALE POUR CEUX QUI UTILISENT L'ANGULAIRE 6:
Ajoutez la commande ci-dessous dans votre fichier * .service.ts "
J'utilise Windows 10;
angular6 avec dactylographié V 2.3.4.0
la source
&
npm install rxjs@6 rxjs-compat@6 --save
travaillé pour moi
la source
En angulaire 2x
Dans example.component.ts
Dans example.component.html
En angulaire 5x ou angulaire 6x:
Dans example.component.ts
Dans example.component.html
la source
MISE À JOUR 29 septembre 2016 pour Angular 2.0 Final et VS 2015
La solution de contournement n'est plus nécessaire, pour résoudre ce problème, il vous suffit d' installer TypeScript version 2.0.3 .
Correction tirée de l'édition sur ce commentaire de problème github .
la source
Si je comprends bien, c'est à cause de la
rxjs
dernière mise à jour. Ils ont changé certains opérateurs et syntaxe. Par la suite, nous devrions importer desrx
opérateurs comme celui-ciimport { map } from "rxjs/operators";
au lieu de cela
Et nous devons ajouter un tuyau autour de tous les opérateurs comme celui-ci
this.myObservable().pipe(map(data => {}))
La source est ici
la source
Comme Justin Scofield l'a suggéré dans sa réponse, pour la dernière version d'Angular 5 et pour Angular 6, comme le 1er juin 2018, juste
import 'rxjs/add/operator/map';
n'est pas suffisant pour supprimer l'erreur TS:[ts] Property 'map' does not exist on type 'Observable<Object>'.
Il est nécessaire d'exécuter la commande ci-dessous pour installer les dépendances requises:
npm install rxjs@6 rxjs-compat@6 --save
après quoi l'map
erreur de dépendance d'importation est résolue!la source
J'étais confronté à une erreur similaire. Cela a été résolu lorsque j'ai fait ces trois choses:
Mise à jour vers les derniers rxjs:
Importer la carte et la promesse:
Ajout d'une nouvelle instruction d'importation:
la source
Il semble que la dernière version de RxJS nécessite le typage 1.8, donc le typage 1.7 signale l'erreur ci-dessus.
J'ai résolu ce problème en passant à la dernière version dactylographiée.
la source
tsc
commande from, veuillez vérifiertsc -v
;-) L'utilisation de "scripts" est une meilleure idée, voir stackoverflow.com/a/37034227/478584Des messages d'erreur similaires apparaîtront lors de la transition de la version 5 à 6. Voici une réponse pour le changement vers rxjs-6.
Importez les opérateurs individuels, puis utilisez
pipe
au lieu de chaîner.la source
Si vous utilisez angular4, utilisez ci-dessous l'importation. ça devrait marcher.
importer 'rxjs / add / operator / map';
Si vous utilisez angular5 / 6, utilisez map with pipe et importez en dessous de un
importer {map} depuis "rxjs / operators";
la source
la propriété 'map' n'existe pas sur le type 'response observable' angular 6
Solution: mettre à jour la CLI angulaire et la version principale
la source