Acabei de atualizar do Angular 2 beta16 para beta17 , que por sua vez requer o rxjs 5.0.0-beta.6. (Changelog aqui: https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta17-2016-04-28 ) Na beta16 tudo estava funcionando bem em relação à funcionalidade Observável / mapa. Os seguintes erros apareceram após a atualização e ocorrem quando o texto datilografado tenta transpilar:
- A propriedade 'map' não existe no tipo 'Observable' (em qualquer lugar em que eu usei o mapa com um observável)
- c: /path/node_modules/rxjs/add/operator/map.d.ts (2,16): erro TS2435: Os módulos ambientais não podem ser aninhados em outros módulos ou espaços de nomes.
- c: /path/node_modules/rxjs/add/operator/map.d.ts (2,16): erro TS2436: A declaração do módulo ambiente não pode especificar um nome de módulo relativo.
Eu já vi essa pergunta / resposta, mas ela não resolve o problema: Erros observáveis no Angular2 beta.12 e RxJs 5 beta.3
Meu appBoot.ts se parece com isso (já estou fazendo referência a 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
]);
Alguém tem alguma idéia do que está dando errado?
typescript
angular
rxjs
brando
fonte
fonte
Respostas:
Você precisa importar o
map
operador:fonte
import { map } from 'rxjs/operators'
, mas outra resposta tem mais detalhes.Atualizei meu plug-in gulp-typescript para a versão mais recente (2.13.0) e agora ele compila sem problemas.
ATUALIZAÇÃO 1: Eu estava usando o gulp-typescript versão 2.12.0
ATUALIZAÇÃO 2: se você estiver atualizando para o Angular 2.0.0-rc.1, faça o seguinte no arquivo appBoot.ts:
O importante é a referência a es6-shim / index.d.ts
Isso pressupõe que você instalou as tipagens es6-shim, como mostrado aqui:
Mais informações sobre a instalação de tipologias da Angular aqui: https://angular.io/docs/ts/latest/guide/typescript-configuration.html#!#typings
fonte
map
mensagem de erro para incluir uma nota para os usuários com problemas semelhantes. Muito obrigado :) #import 'rxjs/Rx';
// Carrega todos os recursosRxjs 5.5 “A propriedade 'map' não existe no tipo Observable.
O problema estava relacionado ao fato de que você precisa adicionar pipe ao redor de todos os operadores.
Mude isso,
para isso
E
Importar mapa como este,
Isso resolverá seus problemas.
fonte
No meu caso, não basta incluir apenas o mapa e a promessa:
Resolvi esse problema importando vários componentes rxjs, como recomenda a documentação oficial :
1) Importar instruções em um arquivo app / rxjs-operator.ts:
2) Importe o próprio operador rxjs no seu serviço:
fonte
Se você vir esse erro no VS2015, há um problema e uma solução alternativa no github mencionados aqui:
https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507
Isso me ajudou a resolver o
property map does not exist on observable
problema. Além disso, verifique se você tem a versão datilografada acima da 1.8.2fonte
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript\typescriptServices.js
com typescriptService trabalhou para VS 15. ( restart vs após a substituição de arquivo )A RESPOSTA FINAL PARA QUEM UTILIZA O ANGULAR 6:
Adicione o comando abaixo no seu arquivo * .service.ts "
Eu estou usando o windows 10;
angular6 com texto datilografado V 2.3.4.0
fonte
&
npm install rxjs@6 rxjs-compat@6 --save
trabalhou para mim
fonte
Em Angular 2x
Em example.component.ts
Em example.component.html
Em angular 5x ou angular 6x:
Em example.component.ts
Em example.component.html
fonte
ATUALIZAÇÃO 29 de setembro de 2016 para Angular 2.0 Final e VS 2015
A solução alternativa não é mais necessária. Para corrigir, basta instalar o TypeScript versão 2.0.3 .
Correção retirada da edição deste comentário do problema do github .
fonte
Pelo que entendi, é por causa da
rxjs
última atualização. Eles mudaram alguns operadores e sintaxe. Depois disso, devemos importarrx
operadores como esteimport { map } from "rxjs/operators";
em vez disso
E precisamos adicionar pipe em todos os operadores como este
this.myObservable().pipe(map(data => {}))
A fonte está aqui
fonte
Como Justin Scofield sugeriu em sua resposta, para a versão mais recente do Angular 5 e para o Angular 6, como em 1º de junho de 2018, apenas
import 'rxjs/add/operator/map';
não é suficiente para remover o erro TS:[ts] Property 'map' does not exist on type 'Observable<Object>'.
É necessário executar o comando abaixo para instalar as dependências necessárias:
npm install rxjs@6 rxjs-compat@6 --save
após o qual omap
erro de dependência de importação é resolvido!fonte
Eu estava enfrentando o erro semelhante. Foi resolvido quando eu fiz essas três coisas:
Atualize para os rxjs mais recentes:
Importar mapa e promessa:
Adicionada uma nova declaração de importação:
fonte
Parece que o RxJS mais recente requer texto datilografado 1.8, portanto o texto datilografado 1.7 relata o erro acima.
Resolvi esse problema atualizando para a versão mais recente do datilografado.
fonte
tsc
partir do comando, verifiquetsc -v
;-) Usar "scripts" é uma idéia ainda melhor, consulte stackoverflow.com/a/37034227/478584Mensagens de erro semelhantes serão exibidas ao fazer a transição da versão 5 para 6. Aqui está uma resposta para a mudança para rxjs-6.
Importe os operadores individuais e use em
pipe
vez de encadear.fonte
Se você estiver usando angular4, use a importação abaixo. deve funcionar.
import 'rxjs / add / operator / map';
Se você estiver usando angular5 / 6, use map with pipe e importe abaixo de um
importar {mapa} de "rxjs / operadores";
fonte
A propriedade 'map' não existe no tipo 'resposta observável' angular 6
Solução: Atualizar a CLI angular e a versão principal
fonte