.pipetakeUntil在不应该监听时

问题描述

我们在logincomponent.ts中使用.pipe(takeUntil)。我需要的是,在成功登录并且用户位于登录页面后,它应该会被破坏。但是,即使用户尝试执行其他活动,并且在目标网页上点击“提交”时,也会调用下面的代码段,这会加载不同的页面,但是“提交”按钮的结果将被覆盖并返回到目标网页。

enter code hereforkJoin({
  flag: this.auth
    .getEnvironmentSettings('featureEnableQubeScan')
    .pipe(take(1)),prefs: this.auth.preferences.pipe(take(1)),}).subscribe(
  (result: any) => {
    this.qubeScanEnabled = result.flag.featureEnableQubeScan;
    this.userPrefs = result.prefs;
    // check to see if we're authed (but don't keep listening)
     this.auth.authed
      .pipe(takeUntilComponentDestroyed(this))
      .subscribe((payload: IJwtPayload) => {
        if (payload) {
           this.auth.accountO
            .pipe(takeUntilComponentDestroyed(this))
            .subscribe((account: IAccount) => {
                if (this.returnUrl) {
                  this.router.navigateByUrl(this.returnUrl);
                } else {
                      this.router.navigate(['dashboard']);
                    }
                  }
                }
              }
        }
);

 ngOnDestroy() {}

自定义代码:

    export function takeUntilComponentDestroyed(component: OnDestroy) {
  const componentDestroyed = (comp: OnDestroy) => {
    const oldNgOnDestroy = comp.ngOnDestroy;
    const destroyed$ = new ReplaySubject<void>(1);
    comp.ngOnDestroy = () => {
      oldNgOnDestroy.apply(comp);
      destroyed$.next(undefined);
      destroyed$.complete();
    };
    return destroyed$;
  };

  return pipe(
    takeUntil(componentDestroyed(component))
  );
}

请让我知道我在做什么错。 版本: rxjs:6.5.5 角度:10.0.8 谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)