首页 > 解决方案 > Angular 6/RxJS 如何使用 takeUntil() 和路由参数取消订阅

问题描述

我需要做一些我觉得太棘手的事情。我正在尝试取消订阅SubscriptionusingtakeUntil并等待路由参数发出更改。

这是棘手的部分:我需要takeUntil在路线内部设置 params subscribe。它应该是这样的:

ngOnInit(): void {
    this.route.params.subscribe(params => {
        this.autoMethodSubscription = interval(5000).pipe(takeUntil(this.route.params)).subscribe(() => { this.autoMethod(); });
    });
}

autoMethodSubscription不起作用,因为我认为它会取消订阅。有任何想法吗?

标签: angulartypescriptrxjs

解决方案


你可以skip第一个。

interval(5000).pipe(
   takeUntil(
      this.route.params
         .pipe(skip(1))
)).subscribe(() => //... 

或者您可以filter更改route.params以指定哪种路由更改将强制取消订阅。

或者您可以使用最常见的模式,取消订阅销毁。

你的目标到底是什么?


推荐阅读