Переход с Angular2 beta1 на Angular2 beta15 — ошибка .map()

Я пытаюсь перенести проект с Angular2 beta1 на Angular2 beta15, и у меня есть некоторые проблемы.

У меня есть сообщение об ошибке: свойство map не существует в ответе Observable‹ >'

Пример кода с этой ошибкой:

import { Injectable } from 'angular2/core';
import { Http, Response, Headers } from 'angular2/http';
import { Observable } from 'rxjs/Observable';
import { HelperModule } from './helpers.module';
import { BlogPost } from './model';
import 'rxjs/add/operator/map';

/**
 * Service dealing with blog data
 */
@Injectable()
export class DataService {

    constructor(private http: Http) { }

    /**
     * Call API to list available blog posts
     */
    listBlogPosts() {
        return this.http.get(HelperModule.UrlBuilder.BuildPostListUrl()).map(res => (<Response>res).json());
    }

}

Код доступен здесь: https://github.com/AdrienTorris/AspNet5Angular2Playground

РЕДАКТИРОВАТЬ: я использую rxjs 5.0.0-beta6 и typescript 1.8.10, ориентируясь на es6


person AdrienTorris    schedule 19.04.2016    source источник
comment
декоратор карт работает с rxjs 5.0.0-beta2   -  person AdrienTorris    schedule 19.04.2016


Ответы (2)


Попробуйте использовать последнюю версию Typescript (1.9) для компиляции кода. Расширение модуля содержит ошибки в некоторых младших версиях TS 1.8. RXJS изменил способ определения своих модулей после версии 5.0.0-beta2.

Вы можете попробовать ночную сборку, используя: npm install -g typescript@next

person Jean-Philippe Leclerc    schedule 19.04.2016

Вам нужно импортировать оператор map:

import 'rxjs/add/operator/map';

или все операторы:

import 'rxjs/Rx';

Смотрите этот вопрос:

person Thierry Templier    schedule 19.04.2016
comment
оператор карты импортирован. Я тестирую с импортом всего. - person AdrienTorris; 19.04.2016
comment
Мама. То же самое при использовании import 'rxjs/Rx';? Я создал plunkr с beta15, и он у меня работает: plnkr.co/edit/7Psl5Q0DGFLxlb4DH0lO?p= предварительный просмотр. Я получаю rxjs с code.angularjs.org, поэтому точно не знаю версию. Я предполагаю, что это rxjs beta2, как описано в angular.io/docs/ts/latest/quickstart. .html. У вас есть такая же ошибка при использовании этой версии с angular2 beta15? - person Thierry Templier; 19.04.2016
comment
с rxjs 5.0.0-beta2 это работает, но у меня есть некоторые другие проблемы с миграцией. - person AdrienTorris; 19.04.2016
comment
Хорошо здорово! Какие проблемы? - person Thierry Templier; 19.04.2016
comment
Токен ошибки должен быть определен! в Function.Injector.resolve(localhost:48900/js/angular2/angular2 .dev.js:11152:25) в Injector.resolveAndCreateChild (localhost:48900/js/angular2/angular2.dev.js:11198:40) по адресу localhost:48900/js/angular2/angular2.dev.js:12529:42 - person AdrienTorris; 19.04.2016
comment
Вы ориентируетесь на es5 или es6? - person AdrienTorris; 19.04.2016
comment
Знаете ли вы, какой токен не определен? - person Thierry Templier; 19.04.2016
comment
с es5 у меня так много ошибок ... например, «Карта не определена» или «Итератор не определен». Со сборками решения es6. Для токена не знаю, токен не использую в приложении и до миграции все работало - person AdrienTorris; 19.04.2016
comment
Добавляете ли вы файлы полифиллов? - person Thierry Templier; 19.04.2016
comment
Для токена, возможно, вы могли бы включить паузу в исключениях в инструментах разработчика (вкладка «Источники»). Таким образом, вы сможете отладить это... - person Thierry Templier; 19.04.2016
comment
Да, я добавляю файл полифиллов, это моя задача gulp для angular: var angularJs = [ './node_modules/angular2/bundles/angular2.dev.js', './node_modules/angular2/bundles/router.dev.js', './node_modules/angular2/bundles/angular2-polyfills.js', './node_modules/angular2/bundles/http.dev.js']; - person AdrienTorris; 19.04.2016