Angular 2 beta.17: właściwość "mapa" nie istnieje na typie " obserwowalny "

Właśnie uaktualniłem z Angular 2 beta16 do beta17 , który z kolei wymaga rxjs 5.0.0-beta.6. (Changelog tutaj: https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28) w beta16 wszystko działało dobrze jeśli chodzi o funkcjonalność Obserwowalną/map. Następujące błędy pojawiły się po uaktualnieniu i występują, gdy typescript próbuje transpile:

  1. właściwość 'map' nie istnieje na typie 'Observable' (wszędzie gdzie używałem mapy z obserwowalnym)
  2. c:/path/node_modules/rxjs/add/operator/map.d. ts (2,16): błąd TS2435: Moduły otoczenia nie mogą być zagnieżdżane w innych modułach lub przestrzeniach nazw.
  3. c:/path/node_modules/rxjs/add/operator/map.d. ts (2,16): błąd TS2436: deklaracja modułu Ambient 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 z Angular2 beta.12 i RxJs 5 beta.3

Mój appBoot.ts wygląda tak (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ś wie, co się dzieje?
Author: Yashwardhan Pauranik, 2016-04-29

16 answers

Musisz zaimportować operator map:

import 'rxjs/add/operator/map'
 284
Author: 0x1ad2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-25 13:45:12

Zaktualizowałem wtyczkę gulp-typescript do najnowszej wersji (2.13.0) i teraz kompiluje się bez przeszkód.

UPDATE 1: wcześniej używałem gulp-typescript 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 swoim appBoot.plik ts:

///<reference path="./../typings/browser/ambient/es6-shim/index.d.ts"/>
import { bootstrap } from "@angular/platform-browser-dynamic";
import { ROUTER_PROVIDERS } from '@angular/router-deprecated';
import { HTTP_PROVIDERS } from '@angular/http';
import { AppComponent } from "./path/AppComponent";
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
// import 'rxjs/Rx'; this will load all features
import { enableProdMode } from '@angular/core';
import { Title } from '@angular/platform-browser';



//enableProdMode();
bootstrap(AppComponent, [
    ROUTER_PROVIDERS,
    HTTP_PROVIDERS,
    Title
]);

Ważne jest odniesienie do es6-shim / index.d. ts

Zakłada się, że zainstalowałeś typy es6-shim, jak pokazano proszę.: Tutaj wpisz opis obrazka

Więcej o typach instalacji z Angular tutaj: https://angular.io/docs/ts/latest/guide/typescript-configuration.html#! # typowanie

 78
Author: brando,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-13 06:29:24

Rxjs 5.5 "właściwość ' map' nie istnieje na typie Observable.

Problem był związany z tym, że trzeba dodać rury wokół wszystkich operatorów.

Zmień to,

this.myObservable().map(data => {})

Do tego

this.myObservable().pipe(map(data => {}))

I

Importuj mapę w ten sposób,

import { map } from 'rxjs/operators';
To rozwiąże Twoje problemy.
 67
Author: Hiran D.A Walawage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-18 06:49:53

W moim przypadku nie wystarczyłoby zamieścić tylko Mapy i obietnicy:

import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';

Rozwiązałem ten problem importując kilka komponentów rxjs jako oficjalna dokumentacja zaleca:

1) zaimportuj instrukcje w jednej aplikacji / operatorach rxjs.plik ts:

// import 'rxjs/Rx'; // adds ALL RxJS statics & operators to Observable

// See node_module/rxjs/Rxjs.js
// Import just the rxjs statics and operators we need for THIS app.

// Statics
import 'rxjs/add/observable/throw';

// Operators
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/switchMap';
import 'rxjs/add/operator/toPromise';

2) Importuj sam operator rxjs w swojej usłudze:

// Add the RxJS Observable operators we need in this app.
import './rxjs-operators';
 41
Author: Alex Valchuk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-23 07:35:30

Jeśli zdarzy ci się zobaczyć ten błąd w VS2015, jest problem z github i obejście opisane tutaj:

Https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507

To pomogło mi rozwiązać problem. Poza tym upewnij się, że masz wersję typescript powyżej 1.8.2
 26
Author: Abu Abdullah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-18 12:26:18

OSTATECZNA ODPOWIEDŹ DLA TYCH, KTÓRZY UŻYWAJĄ ANGULAR 6:

Dodaj poniższe polecenie w swoim *.obsługa.ts plik "

import { map } from "rxjs/operators";

**********************************************Example**Below**************************************
getPosts(){
this.http.get('http://jsonplaceholder.typicode.com/posts')
.pipe(map(res => res.json()));
}
}

Używam windows 10;

Angular6 with typescript V 2.3.4.0

 26
Author: Smit Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-15 03:38:16
import 'rxjs/add/operator/map';

&

npm install rxjs@6 rxjs-compat@6 --save

Pracował dla mnie

 15
Author: Justin Lange,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-28 16:49:07

In Angular 2x

W przykładzie.komponent.ts

import { Observable } from 'rxjs';

W przykładzie.komponent.html

  Observable.interval(2000).map(valor => 'Async value');

W kątowym 5x lub kątowym 6x:

W przykładzie.komponent.ts

import { Observable, interval, pipe } from 'rxjs';
import {switchMap, map} from 'rxjs/operators';

W przykładzie.komponent.html

valorAsync = interval(2500).pipe(map(valor => 'Async value'));
 13
Author: Eduardo Cordeiro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-10 17:10:38

Aktualizacja 29 września 2016 dla Angular 2.0 Final & VS 2015

Obejście nie jest już potrzebne, aby to naprawić wystarczy zainstalować TypeScript w wersji 2.0.3.

Poprawka pobrana z edycji na Ten komentarz do wydania github .

 10
Author: Jason,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-29 03:34:53

Jak rozumiem to z powodu rxjs ostatniej aktualizacji. Zmienili niektóre operatory i składnię. Następnie powinniśmy importować rx operatorów takich jak ten

import { map } from "rxjs/operators";

Zamiast tego

import 'rxjs/add/operator/map';

I musimy dodać rurkę wokół wszystkich operatorów takich jak ten

this.myObservable().pipe(map(data => {}))

Źródło jest tutaj

 10
Author: Gh111,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-22 13:30:56

Jak zasugerował Justin Scofield w swojej odpowiedzi, dla najnowszego wydania Angular 5 i dla Angular 6, Jak na 1 czerwca, 2018, po prostu import 'rxjs/add/operator/map'; nie wystarczy, aby usunąć błąd TS: [ts] Property 'map' does not exist on type 'Observable<Object>'.

Konieczne jest uruchomienie poniższego polecenia, aby zainstalować wymagane zależności: npm install rxjs@6 rxjs-compat@6 --save po czym błąd zależności importowej zostanie rozwiązany!

 9
Author: Nitin Bhargava,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-01 12:51:13

Miałem do czynienia z podobnym błędem. To zostało rozwiązane, gdy zrobiłem te trzy rzeczy:

  1. Aktualizacja do najnowszej wersji rxjs:

    npm install rxjs@6 rxjs-compat@6 --save
    
  2. Importuj mapę i obietnicę:

    import 'rxjs/add/operator/map';
    import 'rxjs/add/operator/toPromise';
    
  3. Dodano nową instrukcję importu:

    import { Observable, Subject, asapScheduler, pipe, of, from, interval, merge, fromEvent } from 'rxjs';
    
 8
Author: lokanath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-15 06:47:38

Wygląda na to, że najnowszy RxJS wymaga typescript 1.8, więc typescript 1.7 zgłasza powyższy błąd.

Rozwiązałem ten problem poprzez aktualizację do najnowszej wersji maszynopisu.

 7
Author: roman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-30 23:21:25

Podobne komunikaty o błędach pojawią się podczas przechodzenia z wersji 5 do 6. Oto odpowiedź na zmianę na rxjs-6.

Importuj poszczególne operatory, a następnie użyj pipe zamiast łączenia.

import { map, delay, catchError } from 'rxjs/operators'; 

source.pipe(
  map(x => x + x),
  delay(4000),
  catchError(err => of('error found')),
).subscribe(printResult);
 6
Author: farrellw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-17 15:07:18

Jeśli używasz angular4 użyj poniżej Importuj. powinno zadziałać .

Import "rxjs / add / operator / map';

Jeśli używasz angular5 / 6, użyj map with pipe i zaimportuj poniżej

Import { map } z "rxjs/operatory";

 6
Author: Manas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-11 10:36:54

Właściwość "mapa" nie istnieje na typie "obserwowalna odpowiedź" kąt 6

Rozwiązanie: Update Angular CLI and Core Version

ng update @angular/cli           //Update Angular CLi 
ng update @angular/core          //Update Angular Core 
npm install --save rxjs-compat   //For Map Call For Post Method 
 1
Author: Jaydeepsinh Makwana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-15 06:50:18