2

注意:我在具有 ngFor 的组件中调用 set 函数。因此,当我调用 set 函数时,ngOnInit 会多次执行,因此 set 函数也会多次执行。 我有一个带有我更新以保持数据一致的对象的可观察对象。

private app= this.subject.asObservable().distinctUntilChanged();

我使用这种方法访问数据

select<T>(name: string): Observable<T> {
   return this.app.pluck(name);
}

当我在每个用户选择上更新这个“应用程序”时,我就会进入一个无限循环。所以 $info 开始一遍又一遍地打印相同的信息。并且“集合”被一遍又一遍地调用。我正在使用异步管道在 html 视图中订阅和取消订阅。有任何想法吗 ?

updateFruits(fruit) {
  this.app.set('Fruits', fruit);
}

set(name: string, state: any) {
  this.subject.next({ ...this.value, [name]: state });
}

   this.info$ = combineLatest(fruits$)
  .pipe(
      distinctUntilChanged(),
      debounceTime(0)
      map(fruits => fruits)
   );
4

1 回答 1

0

我认为要使用类似的运算符,pluck或者distinctUntilChanged您必须使用pipe.

private app = this.subject.asObservable().pipe(distinctUntilChanged());

select<T>(name: string): Observable<T> {
   return this.app.pipe(pluck(name));
}

我以前也从未见过这种set用于可观察对象的方法,只有next.

- 编辑

我明白了,我曾认为 this.app 是可观察的。

我试图重现该错误,但一切似乎都很好:希望能更好地帮助:https ://stackblitz.com/edit/rxjs-stack

于 2020-06-06T20:21:07.313 回答