Я вполне доволен вашим выбором создать Observable из fromEvent
(учтите, синтаксис, который вы показываете сигналы, и более старую (устаревшую) версию RxJS, какую версию вы используете? Я буду использоватьпоследняя версия для моих примеров)
Я думаю, что для вашего первого вопроса вам понадобится startWith()
.
https://github.com/ReactiveX/rxjs/blob/master/src/internal/operators/startWith.ts
Вы будете использовать его так:
fromEvent(this.editButton.nativeElement, 'click').pipe(
map(() => true),
startWith(false)
)
Второй вопрос немного сложнее, поскольку fromEvent()
Observable
не complete
по умолчанию.Это дает вам пару вариантов, и это будет сильно зависеть от вашего варианта использования.
Операторы, которые приходят на ум: take(x)
, где x - это число значений, которые нужно принять.Если это первое значение, first()
также работает.
debounceTime(ms)
, который буферизует все входные данные и выдает только по истечении миллисекунд debounce.Вы можете добавить take(1)
после этого в комбинации, чтобы завершить его после.
Возможно, если бы вы могли расширить свой вариант использования, мы могли бы помочь вам определить, какие операторы или их комбинация помогут.