结合最新的无限循环弹拨运算符



注意:我正在具有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)
);

我认为要使用像pluckdistinctUntilChanged这样的运算符,你必须使用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

最新更新