1. ホーム
  2. angular

[解決済み] ActivatedRoute(paramsなど)のobservableの購読を解除しなければならないのでしょうか?

2023-01-10 05:16:10

質問

私は、多くの例で ActivatedRoute のような観測可能な params または url は購読されているが購読を解除されていない。

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);
}

  • ルートオブジェクトとサブスクリプションは自動的に破棄され、コンポーネントが作成されるたびに新しく作成されるのでしょうか?
  • これらのルートオブジェクトとサブスクリプションの解除について気にする必要がありますか? Observable s?
  • そうでない場合、ActivatedRouteオブジェクトのツリーで何が起こっているのかを Router . routerState ?

どのように解決するのですか?

ドキュメントより :

コンポーネントで observable を購読する場合、ほとんどの場合、コンポーネントが破壊されたときに購読を解除するように手配します。

これが必要でない、いくつかの例外的な観測値があります。ActivatedRoute observableはその例外の一つです。

ActivatedRouteとその観測項目は、ルータ自身から隔離されています。ルータは、それがもはや必要とされないとき、ルーティングされたコンポーネントを破棄し、注入されたActivatedRouteはそれと共に破棄されます。

とにかく自由に購読を中止してください。無害ですし、決して悪い習慣ではありません。