What would be the best way to load a new page into Tab 2 once you have selected it? I can select Tab2 and the app changes to Tab2 but the “LoadDifferentTab2Page” is pushed into the previous tab and not into Tab2?
goToTab2() {
//Here, we need to jump up to the parent nav
//basically the tabs page
//and call select form the Tabs api
this.nav.parent.select(1)
this.nav.push(LoadDifferentTab2Page, params, { animate: true });
In my case I’m in a page0 in tab0 and want to change to tab2 and push page2 so when the user clicks the Back they go to the root of tab2. I had to use setTimeout because the tab change seems to happen async. But this is very fragile…
There is a tab selected event that is fired and contains the selected tab. I guess I could push the desired page into the Tab so when it changes it could do the page push and then delete the desired page data. At least then it won’t rely on the speed of the tab change.
What was the solution you tried? I tried to publish and event but once I’ve navigated away to the other page the event doesn’t seem to register. How did you get it working?
Did you figure out a better solution in the end up? I tried this solution here and it appeared to work, but I didn’t really understand how it worked. What’s actually going on with the setTimeout() line of code?
AFAIK setTimeout() lets the main JS thread run so the select() will be performed (that will cause navCtrl.parent’s selected tab to be updated). Then calling parent.getSelected() should return the newly selected tab. So then the push() happens on that tab instead of the previously selected tab which is what would have happened if you didn’t use setTimeout().
If select() was blocking or had a Promise interface you wouldn’t have to use this hack.