1. ホーム
  2. angular

[解決済み] Angular4のActivatedRouteとActivatedRouteSnapshotの違いは何ですか?

2023-06-20 21:43:09

質問

とはどのような違いがあるのでしょうか? ActivatedRouteSnapshotActivatedRoute をAngular 4で使うことはできますか?私の理解では ActivatedRouteSnapshot の子であると理解しています。 ActivatedRoute の子であることを意味します。 ActivatedRoute には ActivatedRouteSnapshot .

ちなみに、この質問に対する答えを探すためにGoogle検索をかけてみましたが、どの検索結果も理解できるようなものではありませんでした。

ありがとうございました。

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

では ActivatedRoute は再利用可能です。 , ActivatedRouteSnapshot を表すイミュータブルオブジェクトです。 特定のバージョン ActivatedRoute . と同じプロパティを公開します。 ActivatedRoute と同じプロパティをプレーンな値として公開し、一方 ActivatedRoute はそれらをobservableとして公開します。

以下は、実装でのコメントです。

export class ActivatedRoute {
  /** The current snapshot of this route */
  snapshot: ActivatedRouteSnapshot;

ルータがコンポーネントを再利用し、新しいアクティベートされたルートを作成しない場合、2つのバージョンの ActivatedRouteSnapshot の2つのバージョンが存在することになります。 ActivatedRoute . 以下のようなルーティング設定があるとします。

path: /segment1/:id,
component: AComponent

これでナビゲートすると

/segment1/1

の中でparamを持つことになります。 activatedRoute.snapshot.params.id として 1 .

これでナビゲートすると

/segment1/2

の中でparamを持つことになります。 activatedRoute.snapshot.params.id として 2 .

を実装することで見ることができます。

export class AComponent {
  constructor(r: ActivatedRoute) {    
    r.url.subscribe((u) => {
      console.log(r.snapshot.params.id);
    });