Angular distinctUntilChanged - 值比较

时间:2021-06-18 05:42:03

标签: angular rxjs

我有一个 observable 流,它使用 on blur 运算符从输入 fromEvent 发出,我试图比较以前的值和当前值是否不同。

当页面第一次加载时,输入字段中没有值,此时它仍然发出空白值,如何防止这种情况?如果值不同,它将发出值。

fromEvent(this.input.nativeElement, 'blur')
   .pipe(
        takeUntil(this.unsubscribe$),
        map((evt: any) => evt.target.value),
        distinctUntilChanged(
            (pre: any, curr: any) =>
            JSON.stringify(pre) === JSON.stringify(curr)
        )
    )
    .subscribe((caption: string) => {
        console.log('value)
    })

1 个答案:

答案 0 :(得分:1)

你可以使用skipWhile:

  fromEvent(this.input.nativeElement, 'blur')
  .pipe(
    takeUntil(this.unsubscribe$),
    map((evt: any) => evt.target.value),
    skipWhile((text, index) => index === 0 && text === ''),
    distinctUntilChanged(
      (pre: any, curr: any) => JSON.stringify(pre) === JSON.stringify(curr)
    )
  ).subscribe((caption: string) => {
    console.log(caption);
  });