对于rxjs,使用distinctUntilChanged
时可以提供初始值吗?似乎在没有收到以前的值时完全跳过了equals检查。当它收到的第一个值是初始值时,我不希望发出任何东西。
用例
就我而言,我正在使用angular,正在使用反应性表单并订阅其值更改。由于它是一个输入字段,因此我有一个典型的管道设置:
debounceTime(350)
distinctUntilChanged()
当用户将初始字段从空字段更改为某个字段,然后在去抖时间内再次为空时,无论如何都将触发该事件。
我尝试过的事情
distinctUntilChanged
中提供自定义的equals方法
next
答案 0 :(得分:3)
您可以使用skip
跳过第一个发射,或使用skipWhile
仅跳过初始值。
obs.pipe(
debounceTime(350),
distinctUntilChanged(),
skipWhile(value => value === initialValue) // or skip(1)
)
答案 1 :(得分:1)
您可以尝试startWith:
const valueChanges$ = this.form
.get('CONTROL_NAME')
.valueChanges
.pipe(
startWith('INITIAL_VALUE'),
distinctUntilChanged(),
skip(1)
)
.subscribe((value: string) => { ... });