How to navigate between pages in ionic 4 & 5?

折月煮酒 提交于 2020-06-15 10:16:38

问题


I had a project that I developed with ionic 3. But I took a break and when I started working again with ionic, I saw the navigation system change in the new versions. My project is a simple project. This project that lists the data in the a array and details about the data appear on a different page.

I was doing this on Ionic 3: homepage.ts

 export class HomePage  {

  items = [];

    constructor(public navCtrl: NavController) {
      this.initializeItems();}
      initializeItems() {
      this.items = [
   {
    'title': 'John',
    'image': '',
    'hair': 'black',
  },
   {
    'title': 'Brendon',
    'image': '',
    'hair': 'blonde',
  }];

openNavDetailsPage(item) {
    this.navCtrl.push(DetailsPage, { item: item });
  }

detailspage.ts

 export class DetailsPage {
   item;

   constructor(params: NavParams) {
     this.item = params.data.item;
   }
 }

NavCtrl and NavParams are no longer available in version 5 (and I think in version 4). I did to navigate from the home page to the next page(ionic 5). homepage.ts:

    toDetailsPage(){
      this.router.navigate(['details'])
    }

However, I couldn't navigate according to the data on my list. How can I do this according to the next generation version?


回答1:


app.routing.module.ts (Routing Module)

const itemRoutes: Routes = [
    { path: 'item', component: ItemListComponent},
    { path: 'DetailsPage/:id', component: DetailComponent  }
];

homepage.ts file

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

  export class HomePage  {

          constructor(private router: Router)

          openNavDetailsPage(item) {
            this.router.navigate(['/DetailsPage', { item: item }]);
          }
     }

.html file

If you directly want to route through html page:

<ion-button routerLink="/DetailsPage">Log In </ion-button>

or

<ion-button [routerLink]="['/DetailsPage', item.id]">Log In </ion-button>

detail.ts file

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

export class DetailsPage implements OnInit {

  id: any;

  constructor(private route: ActivatedRoute,
    private router: Router) { }

  ngOnInit() {
     this.id = this.route.snapshot.paramMap.get('id');
   }
}

In addition to using a JSON

homepage.ts file

this.router.navigate(['/DetailsPage', { item: JSON.stringify(item) }]);

detail.ts file

this.item = JSON.parse(this.route.snapshot.paramMap.get('item'));


来源:https://stackoverflow.com/questions/57573043/how-to-navigate-between-pages-in-ionic-4-5

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!