J'injecte NavController dans mon constructeur car je souhaite publier une page. Mais, le code ci-dessous ne fonctionne pas dans Ionic 4. Il était totalement acceptable dans Ionic 3.
Constructeur
constructor(public menuCtrl: MenuController, public navCtrl: NavController) {
this.menuCtrl.enable(true);
}
Méthode
goToSecondPage()
{
this.navCtrl.Push(list);
}
Maintenant, pour achever la dernière étape et implémenter ces itinéraires dans notre fichier app-routing.module.ts, ils ressembleraient à ceci:
const routes: Routes = [
{ path: '', redirectTo: '/home', pathMatch: 'full' },
{ path: 'home', loadChildren: './pages/home/home.module#HomeModule' },
{ path: 'products', loadChildren: './pages/products/products.module#ProductsModule'},
{ path: 'products/:id', loadChildren: './pages/product-detail/product-detail.module#ProductDetailModule' },
{ path: 'products/categories', loadChildren: './pages/product-categories/product-categories.
{ path: 'support', loadChildren: './pages/support/support.module#SupportModule' }
];
setRoot en page HTML
<ion-button href="/support" routerDirection="root">
ou en classe
this.navCtrl.navigateRoot('/support');
Pousser
<ion-button href="/products/12" routerDirection="forward">
ou
this.navCtrl.navigateForward('/products/12');
Pop
<ion-button href="/products" routerDirection="backward">
ou
<ion-back-button defaultHref="/products"></ion-back-button>
vous pouvez également naviguer en arrière par programmation:
this.navCtrl.navigateBack('/products');
p/s: https://www.joshmorony.com/converting-ionic-3-Push-pop-navigation-to-angular-routing-in-ionic-4/
premier import navcontroller import {NavController, AlertController} de '@ ionic/angular'; Et maintenant aller de l'avant aussi ne supporte pas il était préférable dans ionic 3 this.nav.navigateForward ('/ ChatPage') pris en charge dans ionic 4 pour, mais ma sugesstion devrait utiliser le routage angulaire
import { Component } from '@angular/core';
import { Router } from '@angular/router';
@Component({
...
})
export class LoginComponent {
constructor(private router: Router){}
navigate(){
this.router.navigate(['/detail'])
}
}
NavController est obsolète dans IONIC 4.
La structure est comme ça.
V3 V4
/src/pages -> /src/app/pages
/src/models -> /src/app/models
/src/providers -> /src/app/providers
Vous pouvez utiliser des paramètres si vous voulez le transmettre.
this.router.navigate ('/ pages, {locs: this.locId}])');
Exemple: Avec le répertoire Pages.
this.router.navigate(['/list', { locs: this.locId }]);
Exemple: Sans répertoire Pages et paramètres.
this.router.navigate(['/list');
Ce lien est utile pour les onglets . Pour plus d’informations, cliquez sur ce lien . [ Https://medium.com/modus-create-front-end-development/upgrading-an-ionic-3 -application-à-ionic-4-eaf81a53cdea] [1]
this.navCtrl.Push(list);
Cela ne fonctionne pas dans Ionic 4. Ionic 4 est basé sur le routage angulaire. Donc, utilisez simplement le code suivant et écrivez un itinéraire pour cela.
this.navCtrl.goForward('/list');
Pour le bouton de retour dans la barre de navigation
Collez le code suivant dans <ion-toolbar> </ion-toolbar>
pour le bouton Précédent de la 2ème page.
<ion-buttons slot="start">
<ion-back-button defaultHref="home"></ion-back-button>
</ion-buttons>
IONIC 4 - Angular (start ionic appName --type = angular)
Bouton Retour physique et Menu touche Précédent
Dans la page Cible (deuxième page), faites:
SecondPage TS
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { Subscription } from 'rxjs';
import { Platform } from '@ionic/angular';
@Component({
selector: 'app-second',
templateUrl: './second.page.html',
styleUrls: ['./second.page.scss'],
})
export class SecondPage implements OnInit, OnDestroy {
inscBackAction: Subscription;
element: HTMLElement;
constructor(
private router: Router,
public platform: Platform) {
}
ngOnInit() {
this.inscBackAction = this.platform.backButton.subscribe(() => {
// Check this log in chrome: "chrome://inspect/#devices"
console.log('Physical Back Button');
this.element = document.getElementById('backButton') as HTMLElement;
this.element.click();
// OR
// this.router.navigate(['/anyPage']);
}, error => {
console.log('\n\nERROR:\n' + error.message + '\n\n');
});
}
ngOnDestroy() {
this.inscBackButton.unsubscribe();
}
}
SecondPage HTML
<ion-header>
<ion-toolbar>
<ion-buttons slot="start">
<ion-menu-button></ion-menu-button>
<!-- Does not work with #backButton -->
<ion-back-button id="backButton" defaultHref="/"></ion-back-button>
</ion-buttons>
<ion-title>
Second
</ion-title>
</ion-toolbar>
</ion-header>
<ion-content padding></ion-content>
_
P.S .:
Peut être nécessaire pour les liens de menu en HTML:
[routerDirection] = "'forward'"
Comme dans "app.component.html" sur les projets sidemenu
<ion-item [routerDirection]="'forward'" [routerLink]="[p.url]">
Voir plus: https://beta.ionicframework.com/docs/api/buttons/