Saya baru saja memutakhirkan dari Angular 2 beta16 ke beta17 , yang pada gilirannya membutuhkan rxjs 5.0.0-beta.6. (Changelog di sini: https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28 ) Pada beta16 semua bekerja dengan baik terkait fungsionalitas Observable / map. Kesalahan berikut ini muncul setelah saya memutakhirkan dan terjadi ketika naskah mencoba untuk mengubah:
- Properti 'peta' tidak ada pada tipe 'Dapat Diamati' (di mana pun saya menggunakan peta dengan yang dapat diamati)
- c: /path/node_modules/rxjs/add/operator/map.d.ts (2,16): kesalahan TS2435: Modul ambient tidak dapat bersarang di modul lain atau ruang nama.
- c: /path/node_modules/rxjs/add/operator/map.d.ts (2,16): error TS2436: Deklarasi modul ambient tidak dapat menentukan nama modul relatif.
Saya telah melihat pertanyaan / jawaban ini tetapi tidak menyelesaikan masalah: Kesalahan yang dapat diamati dengan Angular2 beta.12 dan RxJs 5 beta.3
AppBoot.ts saya terlihat seperti ini (saya sudah mereferensikan rxjs / peta):
///<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
]);
Adakah yang tahu apa yang terjadi?
typescript
angular
rxjs
brando
sumber
sumber
Jawaban:
Anda perlu mengimpor
map
operator:sumber
import { map } from 'rxjs/operators'
, tetapi jawaban lain memiliki lebih banyak detail.Saya memutakhirkan plugin gulp-typescript saya ke versi terbaru (2.13.0) dan sekarang kompilasi tanpa hambatan.
UPDATE 1: Saya sebelumnya menggunakan gulp-typescript versi 2.12.0
UPDATE 2: Jika Anda meningkatkan ke Angular 2.0.0-rc.1, Anda perlu melakukan hal berikut di file appBoot.ts Anda:
Yang penting menjadi referensi untuk es6-shim / index.d.ts
Ini mengasumsikan Anda telah menginstal mengetik es6-shim seperti yang ditunjukkan di sini:
Lebih lanjut tentang pengetikan yang diinstal dari Angular di sini: https://angular.io/docs/ts/latest/guide/typescript-configuration.html#!#typings
sumber
map
pesan kesalahan untuk memasukkan catatan untuk pengguna dengan masalah serupa. Terima kasih banyak :)import 'rxjs/Rx';
// Memuat semua fiturRxjs 5.5 “Properti 'peta' tidak ada pada tipe yang Dapat Diobservasi.
Masalahnya terkait dengan fakta bahwa Anda perlu menambahkan pipa di sekitar semua operator.
Ubah ini,
untuk ini
Dan
Impor peta seperti ini,
Ini akan menyelesaikan masalah Anda.
sumber
Dalam kasus saya, tidak cukup hanya menyertakan peta dan janji:
Saya memecahkan masalah ini dengan mengimpor beberapa komponen rxjs sebagaimana direkomendasikan oleh dokumentasi resmi :
1) Impor pernyataan dalam satu file app / rxjs-operator.ts:
2) Impor rxjs-operator itu sendiri dalam layanan Anda:
sumber
Jika Anda melihat kesalahan ini di VS2015, ada masalah github & solusi yang disebutkan di sini:
https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507
Ini memang membantu saya menyelesaikan
property map does not exist on observable
masalah. Selain itu, pastikan Anda memiliki versi naskah di atas 1.8.2sumber
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript\typescriptServices.js
dengan typescriptService bekerja untuk VS 15. ( restart vs setelah mengganti file )JAWABAN AKHIR UNTUK MEREKA YANG MENGGUNAKAN ANGULAR 6:
Tambahkan perintah di bawah ini di file * .service.ts Anda "
Saya menggunakan windows 10;
angular6 dengan naskah V 2.3.4.0
sumber
&
npm install rxjs@6 rxjs-compat@6 --save
bekerja untukku
sumber
Dalam Angular 2x
Dalam example.component.ts
Dalam example.component.html
Dalam Angular 5x atau Angular 6x:
Dalam example.component.ts
Dalam example.component.html
sumber
UPDATE 29 Sep 2016 untuk Angular 2.0 Final & VS 2015
Solusi tidak diperlukan lagi, untuk memperbaiki Anda hanya perlu menginstal TypeScript versi 2.0.3 .
Perbaikan diambil dari hasil edit pada komentar masalah github ini .
sumber
Seperti yang saya mengerti itu karena
rxjs
pembaruan terakhir. Mereka telah mengubah beberapa operator dan sintaksis. Setelah itu kita harus mengimporrx
operator seperti iniimport { map } from "rxjs/operators";
bukannya ini
Dan kita perlu menambahkan pipa di sekitar semua operator seperti ini
this.myObservable().pipe(map(data => {}))
Sumber ada di sini
sumber
Seperti yang disarankan Justin Scofield dalam jawabannya, untuk rilis terbaru Angular 5 dan untuk Angular 6, seperti pada tanggal 1 Juni 2018,
import 'rxjs/add/operator/map';
tidak cukup untuk menghapus kesalahan TS:[ts] Property 'map' does not exist on type 'Observable<Object>'.
Diperlukan untuk menjalankan perintah di bawah ini untuk menginstal dependensi yang diperlukan:
npm install rxjs@6 rxjs-compat@6 --save
setelah itumap
kesalahan dependensi impor diselesaikan!sumber
Saya menghadapi kesalahan yang sama. Itu terpecahkan ketika saya melakukan tiga hal ini:
Perbarui ke rxjs terbaru:
Impor peta dan janji:
Menambahkan pernyataan impor baru:
sumber
Sepertinya RxJS terbaru membutuhkan naskah 1,8 sehingga naskah 1,7 melaporkan kesalahan di atas.
Saya memecahkan masalah ini dengan memutakhirkan ke versi naskah terbaru.
sumber
tsc
dari perintah, silakan periksatsc -v
;-) Menggunakan "skrip" adalah ide yang lebih baik, lihat stackoverflow.com/a/37034227/478584Pesan kesalahan serupa akan muncul ketika beralih dari versi 5 ke 6. Berikut adalah jawaban untuk perubahan ke rxjs-6.
Impor masing-masing operator, kemudian gunakan
pipe
alih-alih rantai.sumber
Jika Anda menggunakan angular4, gunakan impor di bawah ini. itu harus bekerja.
impor 'rxjs / add / operator / peta';
Jika Anda menggunakan angular5 / 6 maka gunakan peta dengan pipa dan impor di bawah ini
impor {peta} dari "rxjs / operator";
sumber
properti 'peta' tidak ada pada tipe 'respon yang dapat diamati' sudut 6
Solusi: Perbarui Angular CLI Dan Versi Inti
sumber