Angular 6/RxJS 如何使用 takeUntil() 和路由参数取消订阅



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

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

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

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

你可以skip第一个。

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

或者,您可以filter route.params更改,以指定将强制取消订阅的路由更改类型。

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

你的目标到底是什么?

最新更新