javascript - Hur kan jag byta flik och gå till roten av en navigeringsstack?


Jag använder Ionic 2 och har ett set med flikar. Varje flik upprätthåller sin egen navigeringsstack.

Användaren kan gå flera sidor djupt in i någon av flikarna och sedan byta flik.

Problemet är att det finns interaktioner i flik 1 som påverkar innehållet i flik 2. Det jag upptäcker är att om användaren utför vissa handlingar i en viss ordning, får jag ett fel:

Körtidsfel

Ohanterat (i löftet): removeView hittades inte

Jag tror att detta beror på att Ionic försöker ta bort en vy som inte längre finns eftersom innehållet har ändrats.

I Flik 1 trycker användaren på en knapp för att ladda Flik 2. Appen sparar det val de gjorde i lokal lagring, som Flik 2 sedan laddar när den är på rot-sidan. Jag väljer Flik 2 med följande kod:

this.navCtrl.parent.select(1);

Jag tror att jag kan förhindra detta problem genom att gå till roten av navigeringsstacken när fliken väljs, men hur kan jag göra det?

Jag försökte:

this.navCtrl.parent.select(1);
this.navCtrl.parent.goToRoot();

Men med detta händer ingenting. Fliken ändras inte och det finns inga fel.

Så, min fråga: Hur kan jag byta flik och navigera till roten av navigeringsstacken från en annan flik?

Svar #1

För vissa sidor utanför den vanliga navigeringsstacken i min applikation (Ionic 3 med lazy loading), använder jag följande kod, där jag sätter root (setRoot) innan jag navigerar till den nya sidan (popToRoot):

this.navCtrl
    .setRoot('YourPage')
    .then(() => {
      this.navCtrl.popToRoot();
    }, err => console.log(err))