Ionic 将可观察对象添加到现有主题

2skhul33  于 2022-12-08  发布在  Ionic
关注(0)|答案(1)|浏览(111)

我有一个名为event$的可观察对象(Angular Subject)。当加载屏幕时,我希望将DOM控件作为发射器添加到该可观察对象中。可观察对象已经有了订阅者。我通过订阅基于控件的可观察对象来实现这一点,现有的event$如下所示。(为了清楚起见,省略了订阅管理细节。)
共享服务:

private _event$: Subject<Event> = new Subject();
public addEventEmitter(event: Observable<Event>) {
  event.subscribe(this._event$);
}

组件代码:

@ViewChild('leftSide', { read: ElementRef }) leftSide: ElementRef;

const leftClick$: Observable<Event> = fromEvent(this.leftSide.nativeElement, 'click');
this.comms.addEventEmitter(leftClick$.pipe(mapTo(anEvent)));

我有一个可能无关的,ion-toggle控件间歇性显示错误状态的问题。这是将可观察对象与已有订阅者的对象合并的合理方法吗?使用onChange或单击事件调用event$.next()是否更好?在我看来,结合可观察性是更被动的,而为每个控件交互调用event$上的next方法是非常必要的。

7y4bm7vi

7y4bm7vi1#

抛开编写event.subscribe(this._event$);的简单性和优雅性不谈,这样做并不是一个好主意。我注意到,每当_event$完成时,event也会完成,我认为这不是您想要的行为。您最好手动发出值,如下所示:

event.subscribe(e => this._event$.next(e));

尽管您说您省略了订阅管理细节,但我觉得有必要再次提到您需要管理此订阅以避免内存泄漏。

相关问题