Właśnie zaktualizowałem wersję Angular 2 beta16 do wersji beta17 , co z kolei wymaga rxjs 5.0.0-beta.6. ( Dziennik zmian tutaj: https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28 ) W wersji beta16 wszystko działało dobrze, jeśli chodzi o funkcjonalność Observable / map. Następujące błędy pojawiły się po aktualizacji i występują podczas próby transpozycji maszynopisu:
- Właściwość „mapa” nie istnieje na typie „Obserwowalny” (wszędzie tam, gdzie użyłem mapy z obserwowalnym)
- c: /path/node_modules/rxjs/add/operator/map.d.ts (2,16): błąd TS2435: Moduły otoczenia nie mogą być zagnieżdżone w innych modułach lub przestrzeniach nazw.
- c: /path/node_modules/rxjs/add/operator/map.d.ts (2,16): błąd TS2436: Deklaracja modułu otoczenia nie może określić względnej nazwy modułu.
Widziałem to pytanie / odpowiedź, ale to nie rozwiązuje problemu: zauważalne błędy w Angular2 beta.12 i RxJs 5 beta.3
Mój appBoot.ts wygląda następująco (już odwołuję się do 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
]);
Czy ktoś ma pojęcie, co się dzieje?
typescript
angular
rxjs
brando
źródło
źródło
Odpowiedzi:
Musisz zaimportować
map
operatora:źródło
import { map } from 'rxjs/operators'
, ale inna odpowiedź zawiera więcej szczegółów.Zaktualizowałem wtyczkę gulp-maszynopis do najnowszej wersji (2.13.0) i teraz kompiluje się bez żadnych problemów.
AKTUALIZACJA 1: Wcześniej korzystałem z gulp-maszynopisu w wersji 2.12.0
AKTUALIZACJA 2: Jeśli aktualizujesz do Angular 2.0.0-rc.1, musisz wykonać następujące czynności w pliku appBoot.ts:
Ważną rzeczą jest odniesienie do es6-shim / index.d.ts
Zakłada się, że zainstalowałeś typowanie ES6, jak pokazano tutaj:
Więcej informacji na temat instalacji napisów z Angular tutaj: https://angular.io/docs/ts/latest/guide/typescript-configuration.html#!#typings
źródło
map
komunikatu o błędzie, aby dołączyć notatkę dla użytkowników o podobnych sprawach.import 'rxjs/Rx';
// Ładuje wszystkie funkcjeRxjs 5.5 „Mapa” właściwości nie istnieje dla typu Obserable.
Problem związany był z faktem, że musisz dodać potok wokół wszystkich operatorów.
Zmień to,
do tego
I
Importuj mapę w ten sposób,
To rozwiąże twoje problemy.
źródło
W moim przypadku nie wystarczy podać tylko mapę i obiecać:
Rozwiązałem ten problem, importując kilka komponentów rxjs zgodnie z oficjalną dokumentacją :
1) Zaimportuj instrukcje do jednego pliku app / rxjs-operators.ts:
2) Importuj samego operatora rxjs do swojej usługi:
źródło
Jeśli zobaczysz ten błąd w VS2015, oznacza to problem github i obejście wymienione tutaj:
https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507
Pomogło mi to rozwiązać
property map does not exist on observable
problem. Poza tym upewnij się, że masz wersję na maszynie powyżej 1.8.2źródło
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript\typescriptServices.js
z typescriptService pracował dla VS 15. ( restart po wymianie vs plik )OSTATECZNA ODPOWIEDŹ DLA OSÓB KORZYSTAJĄCYCH Z KĄTU 6:
Dodaj poniższe polecenie w pliku * .service.ts „
Korzystam z systemu Windows 10;
angular6 z maszynopisem V 2.3.4.0
źródło
I
npm install rxjs@6 rxjs-compat@6 --save
pracował dla mnie
źródło
W Angular 2x
W example.component.ts
W example.component.html
W Angular 5x lub Angular 6x:
W example.component.ts
W example.component.html
źródło
AKTUALIZACJA 29 września 2016 dla Angular 2.0 Final i VS 2015
Obejście nie jest już potrzebne, aby to naprawić, wystarczy zainstalować TypeScript w wersji 2.0.3 .
Poprawka zaczerpnięta z edycji tego komentarza do wydania github .
źródło
Rozumiem, że dzieje się tak z powodu
rxjs
ostatniej aktualizacji. Zmienili niektóre operatory i składnię. Następnie powinniśmy importowaćrx
takie podmiotyimport { map } from "rxjs/operators";
zamiast tego
I musimy dodać potok wokół wszystkich takich operatorów
this.myObservable().pipe(map(data => {}))
Źródło jest tutaj
źródło
Jak zasugerował Justin Scofield w swojej odpowiedzi, w przypadku najnowszej wersji Angular 5 i Angular 6, jak na 1 czerwca 2018 r.,
import 'rxjs/add/operator/map';
nie wystarczy usunąć błąd TS:[ts] Property 'map' does not exist on type 'Observable<Object>'.
Konieczne jest uruchomienie poniższej komendy, aby zainstalować wymagane zależności:
npm install rxjs@6 rxjs-compat@6 --save
po czymmap
błąd zależności importowania zostanie rozwiązany!źródło
Miałem podobny błąd. Zostało to rozwiązane, gdy zrobiłem te trzy rzeczy:
Zaktualizuj do najnowszych rxjs:
Importuj mapę i obiecuj:
Dodano nowe zestawienie importu:
źródło
Wygląda na to, że najnowsza wersja RxJS wymaga maszynopisu 1.8, więc maszynopis 1.7 zgłasza powyższy błąd.
Rozwiązałem ten problem, aktualizując do najnowszej wersji maszynopisu.
źródło
tsc
polecenia, sprawdźtsc -v
;-) Używanie „skryptów” jest jeszcze lepszym pomysłem, patrz stackoverflow.com/a/37034227/478584Podobne komunikaty o błędach pojawią się podczas przejścia z wersji 5 na 6. Oto odpowiedź na zmianę na rxjs-6.
Zaimportuj poszczególnych operatorów, a następnie użyj
pipe
zamiast łączenia.źródło
Jeśli używasz angular4, użyj poniższego importu. powinno działać.
importuj „rxjs / add / operator / map”;
Jeśli używasz angular5 / 6, użyj mapy z potokiem i zaimportuj poniżej jednego
import {map} z „rxjs / operatorów”;
źródło
właściwość „mapa” nie istnieje dla typu „obserwowalna odpowiedź” kątowa 6
Rozwiązanie: Zaktualizuj Angular CLI i wersję Core
źródło