2016-11-25 4 views
2

Я разрабатываю компонент в Angular2 с RxJs. Это мой первый шаг с RxJs, и я обсуждаю профи и const о том, как использовать RxJs.Подписаться/Отказаться от подписки VS Create/TakeUntil?

Компонент создан на основе текстового поля. Когда текстовое поле является пассивным, не в фокусе, отображается информация о текстовом поле. Когда пользователь нажимает на него, фокус находится в текстовом поле, под ним появляется всплывающая подсказка, отображающая информацию, когда пользователь редактирует текст.

На каждом KeyUp обрабатывается значение текстового поля и проверяется соответствие бизнес-правилам, затем всплывающее окно обновляется, чтобы дать обратную связь пользователю.

Подтверждения обрабатываются как подписка на наблюдаемое на клавиатуре с debounceTime и distinctUntilChanged.

Доступно два события: «начните редактирование», когда пользователь нажимает на текстовое поле и «завершает редактирование», когда пользователь нажимает ENTER, ESCAPE, TAB или кликнет из элемента управления.

Учитывая, что на веб-странице будет представлено более 20 элементов управления такого рода, каковы наилучшие методы управления подпиской на keyUp? Примеры:

  1. Каждый раз, когда «начать редактирование» запускается, создать подписку на KeyUp, как Observable.fromEvent («KeyUp») и добавьте оператор «takeUntil» с событием «конец редактирования» в качестве параметра?
  2. Держите наблюдаемое где-нибудь, каждый раз, когда запускается редактирование, подписывается на него для обработки ввода, когда происходит «редактирование конца», отписывается на него?
  3. Нет существенной разницы между A или B
  4. Другие предложения?

Спасибо! Sebastien

+0

Код стоит тысячи слов. – estus

ответ

0

Я хотел бы сделать что-то вроде этого:

onKeyUpObservable 
    .window(
     startEditingObservable, 
     function() { return endEditingObservable; } 
    ) 
    .subscribe(keyUpEvent => { 
     // Here you will get key up events that happen between 
     // start editing and end editing... 
    }); 

Вы можете прочитать больше на window оператора here.

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