Как я могу предотвратить запуск CombineLatest в первый раз? - PullRequest
0 голосов
/ 25 марта 2020

У меня есть форма с кучей полей (с использованием реактивной формы). Когда значение изменяется в поле A или B, я хочу выполнить doStuffWithAnB.

, поэтому мне кажется, что CombineLatest - это то, что мне нужно.

combineLatest(A.valueChanges,B.valueChanges).subscribe(doStuffWithAnB)

теперь, если пользователь переходит в форму, и касается только B (или A), я хочу выполнить свою функцию,> здесь идет startWith

combineLatest(A.valueChanges.pipe(startWith(someDefaultValue),B.valueChanges.pipe(startWith(someOtherDefaultValue)).subscribe(doStuffWithAnB)

, но теперь doStuffWithAnB запускается с самого начала, так как мои 2 потока имеют startWith, но я не хочу выполнять doStuffWithAnB до тех пор, пока одно из полей не будет изменено

как мне добиться этого чистым способом?

1 Ответ

0 голосов
/ 25 марта 2020

Почему бы не go для merge вместо этого, который возьмет любой из результатов! Нам также не требуется startsWith, поскольку он не должен выполняться изначально!

От:

 combineLatest(A.valueChanges.pipe(startWith(someDefaultValue),B.valueChanges.pipe(startWith(someOtherDefaultValue)).subscribe(doStuffWithAnB)

До:

merge(A.valueChanges,B.valueChanges).subscribe(doStuffWithAnB)
...