Не удалось получить параметр send в роутере в Ionic 4 - PullRequest
0 голосов
/ 09 апреля 2019

В моем проекте Ionic 4 я отправляю параметр с помощью маршрутизатора, но не могу получить параметр на другой странице.

Это мой tabs.router.module.ts:

{
    path: 'tab2',
    children: [
      {
        path: '',
        loadChildren: '../tab2/tab2.module#Tab2PageModule'
      },
      {
        path: 'eventdetails',
        loadChildren: '../eventdetails/eventdetails.module#EventdetailsPageModule'
      },
      {
        path: 'acceptchallenge/:chid',
        loadChildren: '../acceptchallenge/acceptchallenge.module#AcceptchallengePageModule'
      }
    ]
},

Это мой tab2.page.ts :

acceptchallenge(challengesobj)
{
 console.log('Accept Challenge:', challengesobj);
 this.router.navigate(['/tabs/tab2/acceptchallenge/' + challengesobj.id,challengesobj]);
}

В этом сообщении я отправляю challengesobj надругая страница, но я не могу ее получить.

Это мой accept.page.ts :

export class AcceptchallengePage implements OnInit {
  chaobj: any;
  constructor(private route: ActivatedRoute) { }

  ngOnInit() {
  }
  async ionViewWillEnter(){
    let me=this;  
    this.route.params.subscribe(params => {
      me.chaobj = params['challengesobj']; 
    });
    console.log('challengesobj: ', me.chaobj);
  }
}

В этом файле TS, когда я утешаюзначение показывает неопределенное значение.

Любая помощь очень ценится.

1 Ответ

1 голос
/ 09 апреля 2019

Попробуйте:

Отправка объекта:

acceptchallenge(challengesobj)
{

let navigationExtras: NavigationExtras = {
  queryParams: {
    special: JSON.stringify(challengesobj)
  }
};

 this.router.navigate(['/tabs/tab2/acceptchallenge/' + challengesobj.id,navigationExtras]);
}

Получение объекта:

 export class AcceptchallengePage implements OnInit {
      chaobj: any;
      constructor(private route: ActivatedRoute) { 

        this.route.queryParams.subscribe(params => {
           if (params && params.special) {
               this.chaobj = JSON.parse(params.special);
               console.log('challengesobj: ', this.chaobj);
           }
        });
}

  ngOnInit() {
  }

}

Другой способ:

Отправка объекта:

acceptchallenge(challengesobj)
{

let navigationExtras: NavigationExtras = {
  state: {
    challengesobj: challengesobj
  }
};

 this.router.navigate(['/tabs/tab2/acceptchallenge/' + challengesobj.id,navigationExtras]);
}

Получение объекта:

Получение объекта:

 export class AcceptchallengePage implements OnInit {
      chaobj: any;
      constructor(private route: ActivatedRoute) { 

         this.route.queryParams.subscribe(params => {
            if (this.router.getCurrentNavigation().extras.state) {
              this.chaobj = this.router.getCurrentNavigation().extras.state.challengesobj;
          }
       });
}

  ngOnInit() {
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...