angulartypescriptangular2-router3angular2-router

Do I have to unsubscribe from ActivatedRoute (e.g. params) observables?


I find many examples where ActivatedRoute Observables like params or url are subscribed but not unsubscribed.

constructor(private route: ActivatedRoute) {}

ngOnInit() {
  this.route.params
    // (+) converts string 'id' to a number
    .switchMap((params: Params) => this.service.getHero(+params['id']))
    .subscribe((hero: Hero) => this.hero = hero);
}

Solution

  • No

    From the docs :

    When subscribing to an observable in a component, you almost always arrange to unsubscribe when the component is destroyed.

    There are a few exceptional observables where this is not necessary. The ActivatedRoute observables are among the exceptions.

    The ActivatedRoute and its observables are insulated from the Router itself. The Router destroys a routed component when it is no longer needed and the injected ActivatedRoute dies with it.

    Feel free to unsubscribe anyway. It is harmless and never a bad practice.