2016-07-23 2 views
1

Я создаю класс для своего приложения, которое хранит внутренний BehaviorSubject. Есть ли способ, которым я могу выставить соответствующий «BehaviorObservable», который проходит через значения объекта, но имеет только «доступный только для чтения» материал интерфейса Observable? Методы .next(), .error() и .complete() должны быть доступны только внутри страны.RxJS 5: Могу ли я создать «BehaviorObservable»?

Это не просто вопрос (я считаю) использования Observable.create() для передачи значений предмета. Пользователи моего API должны обладать .subscribe() наблюдаемым, а затем сразу же получать обратный вызов для сохраненного текущего значения.

Возможно, я смогу взломать что-то вместе, но я уверен, что я просто пропустил что-то, что может сделать RxJS.

ответ

1

Вы случайно пользуетесь методом .asObservable(), который существовал в Rxjs v4. Не знаю, так ли это в случае с Rxjs v5.

Согласно this, метод должен был быть включен в версию 5.0.0-beta.2. Кроме того, я процитирую здесь свою работу вокруг, если функция не существует:

Вы можете получить ту же функциональность, создавая наблюдаемый с подписываться функциями частного субъекта:

> const subj = new rx.Subject(); 
> const exposed = new rx.Observable(fn => subj.subscribe(fn)); 

Для получения более подробной информации о семантике предметов, вы можете посмотреть here.

+0

Отлично! Да, кажется, что метод '.asObservable()' [существует] (http://reactivex.io/rxjs/file/es6/Subject.js.html#lineNumber98) и [имеет модульные тесты] (http: // reactivex.io/rxjs/test-file/spec-js/Subject-spec.js.html#lineNumber308), но [не указан в документации] (http://reactivex.io/rxjs/class/es6/Subject .js ~ Subject.html). Благодаря! – mhelvens

 Смежные вопросы

  • Нет связанных вопросов^_^