J'ai essayé de passer des paramètres dans la méthode Push de ionic2. comme ça
this.nav.Push(SecondPage, {
thing1: data1,
thing2: data2
});
mais est-il possible de passer un paramètre dans pop ().
Je vous suggère d'utiliser Events . Tout ce que vous avez à faire est de vous abonner à un événement de la page parent, puis de le publier sur l'enfant transmettant les données souhaitées:
// taken from the docs
import { Events } from 'ionic-angular';
constructor(public events: Events) {}
// first page (publish an event when a user is created)
function createUser(user) {
console.log('User created!')
events.publish('user:created', user);
}
// second page (listen for the user created event)
events.subscribe('user:created', (userEventData) => {
// userEventData is an array of parameters, so grab our first and only arg
console.log('Welcome', userEventData[0]);
});
Voici comment je l'ai réalisé dans ionic-3 et le trouve plus facile.
Page d'où nous pop ()
this.navCtrl.getPrevious().data.thing1 =data1;
this.navCtrl.getPrevious().data.thing2 =data2;
this.navCtrl.pop();
Page après pop ():
public ionViewWillEnter() {
this.thing1 = this.navParams.get('thing1')|| null;
this.thing2 = this.navParams.get('thing2')|| null;
}
Actuellement, je pense qu’il n’ya aucun moyen de le faire.
Il y a un problème de Github pour cela cependant, il y a eu de bonnes discussions à ce sujet par l'équipe centrale ionique. On dirait qu'ils l'ont aussi ajouté à la feuille de route Ionic 2! La question de Github a également quelques solutions de contournement proposées, telles que l’ajout de la page de garde à la page de garde de NavParams allant à la page de garde, mais c’est un peu hacky.
Utilisez popTo()
au lieu de pop()
popTo()
a le paramètre params?
où vous pouvez transmettre vos paramètres comme ceci:
this.nav.popTo(SecondPage, {
thing1: data1,
thing2: data2
});
On dirait qu'il y a | Voir la référence du doc |
pop(opts)
prend un paramètre de typeobject
alors
faire un pas en arrière
this.nav.pop({
thing1: data1,
thing2: data2
});
et d'aller à une vue spécifique dans la pile d'historique
this.nav.popTo(SecondPage, {
thing1: data1,
thing2: data2
});
et aller à la racine de la pile
this.nav.popToRoot({
thing1: data1,
thing2: data2
});
Pour récupérer les paramètres _ (je suppose que cela devrait fonctionner. Pas testé!)}
export class SecondPage{
constructor(params: NavParams){
this.params = params;
console.log(this.params.get('thing1'));
}
}
Pour les données envoyées avec pop, vous pouvez utiliser la méthode getPrevious ().
En quittant la page actuelle, obtenir la page précédente et envoyer des données
ionViewWillLeave() {
this.navCtrl.getPrevious().data.formData = {credentials: {...}};
}
Dans la page suivante, obtenez les données de navParams
ionViewWillEnter() {
if (this.navParams.get('formData')) {
// do something
}
}
passer un rappel lors de la transition par aaronksaunders dans ce forum
https://forum.ionicframework.com/t/solved-ionic2-navcontroller-pop-with-params/58104/4
Va l'essayer.