首页 > 解决方案 > 取消订阅 switchmap 内部 observable,同时保持源 observable 处于活动状态 - Angular / RxJS

问题描述

当输入的值发生变化时,我正在尝试进行 http 调用。像这样的东西:

this.formControl.valueChanges
    .pipe(
       switchMap(text => this.service.getRequest(text))
    ).subsscribe()

然后,我还希望能够在某种事件触发时取消订阅内部 observable 并终止请求,但同时保持源 observablethis.formControl.valueChages处于活动状态。

我怎样才能实现这种行为?

编辑1:

我想我错过了 takeUntil 但我认为我让它工作了:

private _unsub = new Subject<void>();

this.formControl.valueChanges
    .pipe(
       switchMap(text => this.service.getRequest(text).pipe(takeUntil(this._unsub)))
    ).subsscribe()

onClick() {
   this._unsub.next();
   this._unsub.complete();
}

如果我不是正确的方法,请纠正我!

标签: angularrxjs

解决方案


推荐阅读