Ответ 1
Вы пытались с этим импортом? он работает для меня
import {Observable} from 'rxjs/Rx';
import 'rxjs/add/operator/map';
в то время как это выглядит так же, как Angular 2 beta.17: Property 'map' не существует в типе 'Observable <Response> '
это новая версия, и эти решения не работают для этой новой выпущенной версии
Я обновляю до последнего Angular 2 rc1 и не могу заставить вещи компилироваться. У меня были проблемы с не признанием "Обещания". Я закончил установку специальной инструкции es6-prom, чтобы решить эту проблему. Я попытался ввести различные операторы импорта, но не повезло. Я работаю в visual studio 2015
import 'rxjs/Rx';
import {Observable} from 'rxjs/Observable';
import {Observer} from 'rxjs/Observer';
import 'rxjs/add/operator/share';
import 'rxjs/add/operator/map';
return this._http.post(url, null, args).map(extractData).toPromise();
но продолжать получать свойство "map" не существует в типе "Observable"
мой файл пакета
"dependencies": {
"@angular/common": "2.0.0-rc.1",
"@angular/compiler": "2.0.0-rc.1",
"@angular/core": "2.0.0-rc.1",
"@angular/http": "2.0.0-rc.1",
"@angular/platform-browser": "2.0.0-rc.1",
"@angular/platform-browser-dynamic": "2.0.0-rc.1",
"@angular/router": "2.0.0-rc.1",
"@angular/router-deprecated": "2.0.0-rc.1",
"systemjs": "0.19.27",
"es6-shim": "^0.35.0",
"reflect-metadata": "^0.1.3",
"rxjs": "5.0.0-beta.6",
"zone.js": "^0.6.12",
"bootstrap": "^3.3.6",
"breeze-client": "~1.5.6",
"handlebars": "^4.0.5"
},
"devDependencies": {
"typescript": "^1.8.10",
"typings": "^0.8.1",
"gulp": "^3.9.1",
"jasmine-core": "~2.4.1",
"karma": "^0.13.22",
"karma-chrome-launcher": "^0.2.3",
"karma-coverage": "^0.5.5",
"remap-istanbul": "^0.6.3",
"karma-jasmine": "^0.3.8",
"karma-jasmine-html-reporter": "^0.2.0",
"http-server": "^0.9.0"
}
Вы пытались с этим импортом? он работает для меня
import {Observable} from 'rxjs/Rx';
import 'rxjs/add/operator/map';
Вот обходной путь. jjokela и VahidN намекали на это также своими комментариями. Я нашел его, посмотрев сообщение в блоге Deborah Kurata здесь. Она описывает использование Angular2 с шаблоном проекта ASP.NET 4, а не новый шаблон ASP.NET 5 RC, который я использую.
Чтобы исправить это, обратитесь к инструкции, приведенной в https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507
Это исправление предназначено для включения в выпуск Typescript 2.0 для Visual Studio. Пока вы не выполните шаги, описанные ниже.
Для VS 2015 (обновление 3):
Установить обновление VS 2015 3 Замените C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\ TypeScript\typescriptServices.js с файлом в https://raw.githubusercontent.com/Microsoft/TypeScript/Fix8518-U3/lib/typescriptServices.js. Сначала сделайте локальную резервную копию.
Для VS 2015 (обновление 2):
Установить обновление VS 2015 Замените C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\ TypeScript\typescriptServices.js с файлом в https://raw.githubusercontent.com/Microsoft/TypeScript/Fix8518/lib/typescriptServices.js. Сначала сделайте локальную резервную копию.
Для VS 2013:
Установите Typescript 1.8.5 (https://www.microsoft.com/en-us/download/details.aspx?id=48739) Замените C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\ TypeScript\typescriptServices.js с файлом https://raw.githubusercontent.com/Microsoft/TypeScript/Fix8518-Dev12/lib/typescriptServices.js. Сначала сделайте локальную резервную копию.
У меня была такая же проблема. Кажется, он решил после добавления этой строки в класс AppComponent.
import 'rxjs/Rx';
Ничего кроме
import { Observable } from 'rxjs/Rx';
Проблема, скорее всего, связана с https://github.com/Microsoft/TypeScript/issues/7415, который еще не видел полной версии VS. Можно создавать источники локально и использовать VS Dev Mode.
Я испытываю такую же проблему после обновления до Angular2 RC. Я получаю VS 2015 ошибки Intellisense для свойства "карта" не существует в типе "Observable".
Я использую grunt-ts для выполнения трансляции, поэтому он не влияет на мою способность переносить, но это раздражает, увидев его в редакторе как ошибки, когда их раньше не было.
Я считаю, что проблема связана с загрузкой Typescript для Visual Studio. https://www.microsoft.com/en-us/download/details.aspx?id=48593
В настоящее время он находится в версии 1.8.6, и я считаю, что он управляет intellisense Visual Studio, а также сборкой в Typescript компиляции, если именно так вы ее настраиваете. Поэтому нам просто придется ждать появления новой версии Typescript для Visual Studio.
Ваш импорт хорош. Основная причина проблемы описана на https://github.com/ReactiveX/rxjs/issues/1540
Чтобы исправить это, вам нужно обновиться до последней версии typescript 1.8.
Обратите внимание, что при запуске tsc
вы используете глобальный typescript (check tsc -v
). Чтобы обновить глобальный typescript, запустите npm i typescript -g
.
Если вы хотите использовать typescript, определенный в package.json
, вам нужно выполнить его через "scripts"
, т.е. добавить "build": "tsc"
и выполнить его с помощью npm run build
.
У меня такая же проблема. Я запускаю TypeScript 1.8.11. Боюсь, у меня нет решения. Я думаю, что это настоящая проблема с rxjs или angular 2 rc 1.
Я понизил rxjs до бета-2 и исправил эту проблему. К сожалению, angular rc1 зависит от бета-версии 6, поэтому полная установка npm не выполняется.
Дэн. У меня была серия проблем, пытающихся получить успешный прогон, как только я добавила Observable в свой код после обновления до Angular 2 rc1. Для меня это было добавлено
"emitDecoratorMetadata": true,
в файл tsconfig.json. Как только я добавил эту строку, она корректно отобразилась как в IIS, так и при запуске npm. Мой полный файл tsconfig.json выглядит следующим образом:
{"compilerOptions": {
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es5",
"experimentalDecorators": true,
"module": "commonjs",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true }, "exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts" ]}
(извините за форматирование... он опаздывает). Надеюсь, это поможет.
в toPromise.d.ts
добавить "import {Observable} из".. /../Observable ";"
import { ToPromiseSignature } from '../../operator/toPromise';
import {Observable} from '../../Observable';
declare module '../../Observable' {
interface Observable<T> {
toPromise: ToPromiseSignature<T>;
}
}
Вы можете сделать то же самое для map.d.ts
Надеюсь, что это поможет.
import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions} from '@angular/http';
import 'rxjs/Rx';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
return this._http.post(url, null, args).map(this.extractData)
Сделать функцию extractDatap >
Попробуйте это. Он будет работать на вас. Он работает для меня.
Я получил эту работу для ag-grid angular 2 компонента, который .
Мне нужны были типизации для Promise, с которыми вы сталкиваетесь:
tsd install es6-shim
затем в параметрах typescript укажите загруженный файл типизации, например, как один из файлов для компиляции в tsconfig.json, то есть:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"outDir": "lib"
},
"files": [
"typings/es6-shim/es6-shim.d.ts", // the typings file
"app/boot.ts" // you application
]
}
Установка типов для es6-shim
разрешила для меня такую же проблему:
typings i es6-shim --ambient --save-dev
Это было нарушение изменений в бета-версии 6, и чтобы обойти его, вы могли бы включить ссылку на внутренние файлы типирования внутри angular. К сожалению, они были удалены в 2.0.0-rc.0, поэтому теперь вы должны полагаться на внешние типизации для того же самого.
если вы только что обновили до Angular2 rc1, убедитесь, что вы используете новые операторы импорта @angular, а не angular2:
`import { Component } from 'angular2/core';`
становится,
`import { Component } from '@angular/core';`
Я знаю, что это кажется простым, но это может вызвать эту проблему.
Найти бета-версию 2.0.0 TypeScript для Visual Studio 2015. Этот выпуск решил такую же проблему на моей машине. Но помните, это бета-версия.
Если вы обновляетесь с Angular2 кандидатом на выпуск (например, 2.0.0-rc.1) до версии 2.x.x,, вам нужно:
Обновите свой package.json, чтобы обновить его с помощью файла https://github.com/angular/quickstart/blob/master/package.json
Обновите файл systemjs.config.js, чтобы обновить его с помощью файла https://github.com/angular/quickstart/blob/master/systemjs.config.js
Измените оператор импорта на:
import {Observable} from 'rxjs'