有没有办法将对象作为导航参数传递?

Is there a way to pass objects as a navigationParam?

gotomsg 和 go2msg 是我在将它们发送到我正在导航的页面之前记录的 2 个对象。

  goToMessagePage(itinerary) {
    let myItin = this.findMyItinerary(itinerary.id);
    console.log('gotomsg', myItin);
    console.log('go2Msg', itinerary);

    const navigationParam: NavigationExtras = {
      queryParams: {
        theirItinerary: itinerary,
        myItinerary: myItin
      }
    };
    this.router.navigate(['messages'], navigationParam);
  }

一旦我导航到 'messages' 页面,我在 [object Object] 中得到了 2 个对象,但是当我尝试访问对象的任何属性时,比如 object.id 我得到 'undefined'.

  constructor(public messageService: MessagesService,
              private route: ActivatedRoute) {

    this.route.queryParams.subscribe(params => {
      this.theirItinerary = params['theirItinerary'];
      this.myItinerary = params['theirItinerary'];
      console.log('Myitinerary message', this.myItinerary.data());
      console.log('theirItin message', this.theirItinerary.data());
    });
  }

有没有办法获取作为导航参数传递的对象的值?

尝试使用 JSON.stringify

  goToMessagePage(itinerary) {
    let myItin = this.findMyItinerary(itinerary.id);
    console.log('gotomsg', myItin);
    console.log('go2Msg', itinerary);

    const navigationParam: NavigationExtras = {
      queryParams: {
        theirItinerary: itinerary,
        myItinerary: JSON.stringify(myItin),
      },
    };
    this.router.navigate(['messages'], navigationParam);
  }

或使用state

  goToMessagePage(itinerary) {
    let myItin = this.findMyItinerary(itinerary.id);
    console.log('gotomsg', myItin);
    console.log('go2Msg', itinerary);

    const navigationParam: NavigationExtras = {
      queryParams: {
        theirItinerary: itinerary,
      },
      state: {
        myItinerary: myItin,
      },
    };
    this.router.navigate(['messages'], navigationParam);
  }

消息组件:

  constructor(
    private router: Router,
  ) {
    const navigation = this.router.getCurrentNavigation();
    console.log(navigation.extras.state);
  }