[Angular8/Ionic4] ActivatedRouteでネストされたオブジェクトを受け取ることができない

Ionic4でアプリ開発をしております。
タイトルの通り、ネストされたオブジェクトを渡したいのですが、遷移先pageで受け取る事ができません。

遷移元

import { Router } from '@angular/router';

# 省略

  navigate() {
    this.router.navigate(['/tabs/home',
      {
        hoge: {
          fuga: 1
        }
      }
    ]);
  }

遷移先

import { ActivatedRoute } from '@angular/router';

# 省略

  ngOnInit() {
    this.route.paramMap.subscribe(data => {
      console.log('route.params', data);
    });
  }

上記のコードで確認してみると、コンソールには[ object object]と表示されてしまいます
何か別の方法でもいいので、遷移先のpageにネストされたオブジェクトを渡すことはできないでしょうか?
image

あくまでもURLを介したデータのやりとりなので、ネストされたオブジェクトを渡すことはできません。
そうしたことがやりたい場合はServiceなどを使ってコンポーネント間でのデータのやり取りを行うことになります。

1 Like

lacoさんがおっしゃっている通りサービスを使うべきで、以下に書くものはバッドノウハウなのですが、
オブジェクトをJSON.stringifyで文字列にしてパーセントエンコーディングするなどを行えばやり取りできる場合がありますね。(エンコードの過程で型が死にます)

1 Like

あまり推奨できないとは思いますが、一応router.navigate()の第二引数navigationExtrasには状態を持たせることができるみたいです
こちらも [k: string]: anyなので型の保証はできないですね