2016-07-29 6 views
3

Я в процессе обучения RxJS, и я постоянно стараюсь многих операторов и комбинаций, которые мне интересны.Некоторые операторы RxJS отсутствуют в проекте angular2 CLI? Что делать?

Я изучаю форму здесь: http://reactivex.io/documentation/operators.html и here.

У меня есть проект CLI Angular2 rc4 - так что я использую TypScript. RxJS является: 5.0.0-beta.6

Проблема:

Я обнаружил, что некоторые операторы не присутствуют на Observable.

Например: Я хочу создать наблюдаемым, который возвращает один на один пар ключ-значение объекта: Вы можете увидеть, как реализация выглядит, как я взял его from here.

// Using Standard JavaScript 
var obj = { 
    foo: 42, 
    bar: 56, 
    baz: 78 
}; 

var source = Rx.Observable.pairs(obj); 

var subscription = source.subscribe(
    function (x) { 
    console.log('Next: %s', x); 
    }, 
    function (err) { 
    console.log('Error: %s', err); 
    }, 
    function() { 
    console.log('Completed'); 
    }); 

// => Next: ['foo', 42] 
// => Next: ['bar', 56] 
// => Next: ['baz', 78] 
// => Completed 

Но вот то, что мой редактор выглядит следующим образом:

enter image description here

нет Intelisense для Observable.pairs() ..

enter image description here

на основе this post я присоединились 2 импорта:

import {Observable} from "rxjs/Rx"; 
import 'rxjs/Rx'; // import all operators and stuff. it's not good practice i know, but only for this example 

И судимым установить больше типизации для rxjs, чем угловая кли обеспечивает, но не работает:

typings install --save --ambient npm:rx/ts/rx.all.d.ts // Unable to resolve "npm:rx/ts/rx.all.d.ts" from "rx" 
or 
typings install rxjs // Unable to find "rxjs" ("npm") in the registry. 

И также судимым использовать:

import * as Rx form 'rxjs/Rx' 
myObjProperties$ = Rx.Observable.pairs(myObj) // still doesn't work, same error. 

И также, я не могу объяснить, почему печать объекта Observable на консоль не работает. Я получаю string-function, который бесполезен. Нет прототипа.

console.log('TheAllmightyObservable : ', Observable) // i get: 

// TheAllmightyObservable : function Observable(subscribe) { 
     // this._isScalar = false; 
     // if (subscribe) { 
      // this._subscribe = subscribe; 
     // } 
    // } 

У меня есть такая же проблема со многими другими операторами: ofObjectChanges, ofArrayChanges, ofWithSkeduler, пар - некоторые из них не так уж важно - но ошибки меня, когда я нашел один оператор RxJs, что очень полезно, и Я не могу использовать его в проекте angular2 CLI.

Вопросы:

  1. , что angular2 должен делать с RxJS? (у меня отсутствует общая картина, я думаю ..) - есть ли отдельный список операторов angular2-rxjs или RxJS полностью разделенный пакет и может использоваться, например, как JQuery? Я имею в виду отсутствие проводных помех между 2 - что я не могу предсказать. (Цикл дайджеста связан, может быть ?!)

  2. Где я могу найти хороший список всех операторов RxJS, доступных на угловом2 - при условии, что существует.

  3. Это только проблема машинописного машиностроения? Если да, то как их установить, чтобы иметь все операторы, доступные в документах? Если типирования нет, как временно избавиться от этой проблемы "no property/method found on x"?

Спасибо, что нашли время, чтобы читать и помочь мне найти решение этого :)

+0

У меня была такая же проблема [здесь] (http://stackoverflow.com/questions/38607203/angular-2-property-topromise-does-not-exist-on-type-observableresponse) и ее несколько схожая с ней , Пока это еще не ответило. У меня есть проблема с угловым github, но решения не найдено. Надеюсь, вы найдете решение для этого –

ответ

5

Root вопрос: Вы используете одну версию RxJS, но глядя на документацию на другой.

RxJS 5 (бета), используемые с угловыми 2: https://github.com/ReactiveX/rxjs RxJS 4 (стабильные): https://github.com/Reactive-Extensions/RxJS

Эти операторы не существует на новой версии, которая почему вы не можете их видеть.

на вопросы:

1) RxJS не имеет ничего общего с Angular2, вы можете использовать RxJS без Angular2. RxJS - это просто библиотека для создания потоков событий, она работает ортогонально тому, что когда-либо использовалось для , генерирует события.

2) Если вы используете RxJS 4, вы можете использовать docs, которые довольно хороши. RxJS 5 все еще работает, но есть документы, которые генерируются процессом сборки here.

3) В данном случае это не типичная проблема.