Angular 2 2.0.0-rc.1 Свойство ‘map’ не существует в типе ‘Observable ‘ не совпадает с сообщением о выпуске
в то время как это похоже на ту же проблему, что и Angular 2 beta.17: Property ‘map’ не существует в типе ‘Observable ‘
это новая версия, и эти решения не работают для этой новой выпущенной версии
Я обновляю до последней версии Angular 2 rc1 и не могу заставить вещи компилироваться. У меня были проблемы с не признанием «Обещания». Я закончил установку специальной инструкции es6-prom, чтобы решить эту проблему. Я попытался ввести различные операторы импорта, но не повезло. Я работаю в visual studio 2015
- Angularjs, проходящий между маршрутами
- Угловая 2 - Использование общей службы
- Лучший способ импортировать Observable из rxjs
- Каковы различия между SystemJS и Webpack?
- Каков наилучший способ объявить глобальную переменную в Angular 2 / Typcript
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" }
- Передача данных с предметами и прокси
- * ng Для запуска бесконечного цикла в угловом2
- Угловой 2 - Услуги, требующие других услуг до вызова метода
- Угловая 2 Показать и скрыть элемент
- Угловой 2 пользовательских ввода формы
- Как обмениваться услугой между двумя модулями - @NgModule в угловом не между компонентами?
- Невозможно связать с 'formGroup', поскольку это не известное свойство 'form'
- Угловой массив объектов для изменения данных
вы пытались с этим импортом? меня устраивает
import {Observable} from 'rxjs/Rx'; import 'rxjs/add/operator/map';
Вот обходной путь. jjokela и VahidN намекали на это также своими комментариями. Я нашел его, посмотрев сообщение в блоге Деборы Кураты. Она описывает использование Angular2 с шаблоном проекта ASP.NET 4, а не новый шаблон ASP.NET 5 RC, который я использую.
Чтобы исправить это, обратитесь к этой инструкции, найденной по адресу https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507
Это исправление предназначено для включения в выпуске TypScript 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 2 Замените 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 . Сначала возьмите локальную резервную копию.
У меня была такая же проблема. Кажется, он решил после добавления этой строки в class 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, чтобы сделать свою транспиляцию, так что это не влияет на мою способность превзойти, но это раздражает, увидев ее в редакторе как ошибки, когда их раньше не было.
Я считаю, что проблема связана с загрузкой скриптов для Visual Studio. https://www.microsoft.com/en-us/download/details.aspx?id=48593
В настоящее время он находится в версии 1.8.6, и я считаю, что он запускает intellisense для Visual Studio, а также сборку в сборке машинописных текстов, если именно так вы ее настраиваете. Поэтому нам просто придется подождать, пока новая версия Typcript для Visual Studio не исчезнет.
Дэн. У меня была серия проблем, пытающихся добиться успешного запуска, как только я добавила 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 { toPromise: ToPromiseSignature ; } }
Вы можете сделать то же самое для map.d.ts
Надеюсь это поможет.
Ваш импорт хорош. Основная причина проблемы описана на https://github.com/ReactiveX/rxjs/issues/1540
Чтобы исправить это, вам нужно перейти на новый тип 1.8.
Обратите внимание, что при запуске tsc
вы используете глобальный машинописный tsc -v
(проверьте tsc -v
). Чтобы обновить глобальный машинописный tsc -v
, запустите npm i typescript -g
.
Если вы хотите использовать typescript, определенную в package.json
, вам нужно выполнить ее через "scripts"
, то есть добавить "build": "tsc"
и выполнить ее с npm run build
.
У меня такая же проблема. Я запускаю TypeScript 1.8.11. Боюсь, у меня нет решения. Я думаю, что это настоящая проблема либо с rxjs, либо с угловым 2 rc 1.
Я понизил rxjs до бета-2, и он исправил эту проблему. К сожалению, угловой rc1 зависит от бета-6, поэтому полная установка npm не выполняется.
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)
Сделать функцию extractData
Попробуйте это. Он будет работать на вас. Он работает для меня.
Я получил эту работу для компонента ag-grid угловой 2, который находится здесь .
Мне нужны тиски для Promise, которые вы получаете: tsd install es6-shim
затем в параметрах вашего машинописного текста укажите загруженный файл типизации как один из файлов для компиляции в 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, и чтобы обойти его, вы могли бы включить ссылку на внутренние файлы типирования внутри углового. К сожалению, они были удалены в 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.xx, вам необходимо:
-
Обновите файл 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'