繁体   English   中英

Angular 8 Rxjs distinctUntilChanged 运算符

[英]Angular 8 Rxjs distinctUntilChanged operator

我的代码和 distinctUntilChanged 运算符有问题。

这是我的代码:

ngAfterViewInit() {
    fromEvent(this.headlineInput.nativeElement, 'blur').pipe(
      takeUntil(this.unsubscribe$),
      map((evt: any) => evt.target.value),
      distinctUntilChanged()
    ).subscribe((text: string) => {
      this.onInputValueChanges(text);
    });
  }

在这段代码中,我想在模糊上运行this.onInputValueChanges(text)方法,但只有当标题输入中的某些内容发生变化时。 如果没有,则不应在 subscribe 中运行此方法。 我以为我可以使用distinctUntilChanged,但它似乎不起作用。 只要我的标题输入变得模糊,它就会运行。 难道我做错了什么? 有人能指出我这段代码有什么问题吗? 谢谢!

如果你想偷懒,你可以检查对象值是否与之前的发射不同。

ngAfterViewInit() {
    fromEvent(this.headlineInput.nativeElement, 'blur').pipe(
      takeUntil(this.unsubscribe$),
      map((evt: any) => evt.target.value),
      // don't run if the stringified version of the object is the same.
      distinctUntilChanged((pre: any, curr: any) => JSON.stringify(pre) === JSON.stringify(curr)),
    ).subscribe((text: string) => {
      this.onInputValueChanges(text);
    });
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM