diff --git a/src/components/nav/test/toggle-basic/app/app.component.ts b/src/components/nav/test/toggle-basic/app/app.component.ts
new file mode 100644
index 00000000000..e3359c5486f
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/app/app.component.ts
@@ -0,0 +1,38 @@
+import { Component, ViewChild } from '@angular/core';
+import { NavController } from '../../../../..';
+@Component({
+ template: `
+
+
+
+ Menu
+
+
+
+
+
+
+ Page One
+
+
+ Page Four
+
+
+
+
+
+ `
+})
+export class AppComponent {
+ root = 'RootPage';
+
+ @ViewChild('content') nav: NavController;
+
+ goToTabsOne() {
+ this.nav.setRoot('FirstPage');
+ }
+
+ goToTabsTwo() {
+ this.nav.setRoot('FourthPage');
+ }
+}
diff --git a/src/components/nav/test/toggle-basic/app/app.module.ts b/src/components/nav/test/toggle-basic/app/app.module.ts
new file mode 100644
index 00000000000..55310fa2157
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/app/app.module.ts
@@ -0,0 +1,17 @@
+import { NgModule } from '@angular/core';
+import { BrowserModule } from '@angular/platform-browser';
+import { IonicApp, IonicModule } from '../../../../..';
+
+import { AppComponent } from './app.component';
+
+@NgModule({
+ declarations: [
+ AppComponent
+ ],
+ imports: [
+ BrowserModule,
+ IonicModule.forRoot(AppComponent, { swipeBackEnabled: true, preloadModules: true }),
+ ],
+ bootstrap: [IonicApp]
+})
+export class AppModule {}
diff --git a/src/components/nav/test/toggle-basic/app/main.ts b/src/components/nav/test/toggle-basic/app/main.ts
new file mode 100644
index 00000000000..6af7a5b2ae8
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/app/main.ts
@@ -0,0 +1,5 @@
+import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
+
+import { AppModule } from './app.module';
+
+platformBrowserDynamic().bootstrapModule(AppModule);
diff --git a/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.html b/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.html
new file mode 100644
index 00000000000..aca548b23e2
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+ Fifth Page
+
+
+
+ Fifth Page
+
+ User ID: {{userId}}
+
+
+ Name {{name}}
+
+ Next Page
+
\ No newline at end of file
diff --git a/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.module.ts b/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.module.ts
new file mode 100644
index 00000000000..4628c136b9c
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../..';
+import { FifthPage } from './fifth-page';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(FifthPage)
+ ],
+ declarations: [
+ FifthPage
+ ]
+})
+export class FifthPageModule { }
diff --git a/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.ts b/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.ts
new file mode 100644
index 00000000000..1cb6fa4d52d
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/fifth-page/fifth-page.ts
@@ -0,0 +1,22 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, NavParams } from '../../../../../..';
+
+@IonicPage({
+ segment: 'fifthPage/user/:userId/name/:name'
+})
+@Component({
+ templateUrl: 'fifth-page.html'
+})
+export class FifthPage {
+
+ userId: string;
+ name: string;
+ constructor(public nav: NavController, public params: NavParams) {
+ this.userId = this.params.data.userId;
+ this.name = this.params.data.name;
+ }
+
+ goToNextPage() {
+ this.nav.push('SixthPage', { paramOne: 'Kelly Kapore', paramTwo: 'Creed Bratton'});
+ }
+}
diff --git a/src/components/nav/test/toggle-basic/pages/first-page/first-page.html b/src/components/nav/test/toggle-basic/pages/first-page/first-page.html
new file mode 100644
index 00000000000..b9e1e121932
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/first-page/first-page.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ First Page
+
+
+
+ First Page
+
+ Go To Next Page
+
+
\ No newline at end of file
diff --git a/src/components/nav/test/toggle-basic/pages/first-page/first-page.module.ts b/src/components/nav/test/toggle-basic/pages/first-page/first-page.module.ts
new file mode 100644
index 00000000000..c088e9f2d4c
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/first-page/first-page.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../..';
+import { FirstPage } from './first-page';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(FirstPage)
+ ],
+ declarations: [
+ FirstPage
+ ]
+})
+export class FirstPageModule { }
diff --git a/src/components/nav/test/toggle-basic/pages/first-page/first-page.ts b/src/components/nav/test/toggle-basic/pages/first-page/first-page.ts
new file mode 100644
index 00000000000..8a4f43f9484
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/first-page/first-page.ts
@@ -0,0 +1,15 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, } from '../../../../../..';
+
+@IonicPage()
+@Component({
+ templateUrl: 'first-page.html'
+})
+export class FirstPage {
+ constructor(public nav: NavController) {
+ }
+
+ clickMe() {
+ this.nav.push('SecondPage', { userId: '123', name: 'Phyllis Vance, Vance Refridgeration'});
+ }
+}
diff --git a/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.html b/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.html
new file mode 100644
index 00000000000..db07985cc03
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Fourth Page
+
+
+
+ Fourth Page
+
+ Go To Next Page
+
+
\ No newline at end of file
diff --git a/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.module.ts b/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.module.ts
new file mode 100644
index 00000000000..bd1e03fcae8
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../..';
+import { FourthPage } from './fourth-page';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(FourthPage)
+ ],
+ declarations: [
+ FourthPage
+ ]
+})
+export class FourthPageModule { }
diff --git a/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.ts b/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.ts
new file mode 100644
index 00000000000..1bcdd5990c2
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/fourth-page/fourth-page.ts
@@ -0,0 +1,15 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, } from '../../../../../..';
+
+@IonicPage()
+@Component({
+ templateUrl: 'fourth-page.html'
+})
+export class FourthPage {
+ constructor(public nav: NavController) {
+ }
+
+ clickMe() {
+ this.nav.push('FifthPage', { userId: '456', name: 'Ryan Howard'});
+ }
+}
diff --git a/src/components/nav/test/toggle-basic/pages/root-page/root-page.module.ts b/src/components/nav/test/toggle-basic/pages/root-page/root-page.module.ts
new file mode 100644
index 00000000000..3e27b172874
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/root-page/root-page.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../..';
+import { RootPage } from './root-page';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(RootPage)
+ ],
+ declarations: [
+ RootPage
+ ]
+})
+export class RootPageModule { }
diff --git a/src/components/nav/test/toggle-basic/pages/root-page/root-page.ts b/src/components/nav/test/toggle-basic/pages/root-page/root-page.ts
new file mode 100644
index 00000000000..7621e1a693a
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/root-page/root-page.ts
@@ -0,0 +1,25 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, } from '../../../../../..';
+
+@IonicPage()
+@Component({
+ template: `
+
+
+
+
+
+ Root Page
+
+
+
+ Root Page
+ Toggle Menu
+
+ `
+})
+export class RootPage {
+
+ constructor(public nav: NavController) {
+ }
+}
diff --git a/src/components/nav/test/toggle-basic/pages/second-page/second-page.html b/src/components/nav/test/toggle-basic/pages/second-page/second-page.html
new file mode 100644
index 00000000000..482598d1ef3
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/second-page/second-page.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Second Page
+
+
+
+
+ User ID: {{userId}}
+
+
+ Name {{name}}
+
+ Next Page
+
\ No newline at end of file
diff --git a/src/components/nav/test/toggle-basic/pages/second-page/second-page.module.ts b/src/components/nav/test/toggle-basic/pages/second-page/second-page.module.ts
new file mode 100644
index 00000000000..08053b890ac
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/second-page/second-page.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../..';
+import { SecondPage } from './second-page';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(SecondPage)
+ ],
+ declarations: [
+ SecondPage
+ ]
+})
+export class SecondPageModule { }
diff --git a/src/components/nav/test/toggle-basic/pages/second-page/second-page.ts b/src/components/nav/test/toggle-basic/pages/second-page/second-page.ts
new file mode 100644
index 00000000000..a4a62e3effd
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/second-page/second-page.ts
@@ -0,0 +1,22 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, NavParams } from '../../../../../..';
+
+@IonicPage({
+ segment: 'secondPage/user/:userId/name/:name'
+})
+@Component({
+ templateUrl: 'second-page.html'
+})
+export class SecondPage {
+
+ userId: string;
+ name: string;
+ constructor(public nav: NavController, public params: NavParams) {
+ this.userId = this.params.data.userId;
+ this.name = this.params.data.name;
+ }
+
+ goToNextPage() {
+ this.nav.push('ThirdPage', { paramOne: 'Tobey', paramTwo: 'Kevin'});
+ }
+}
diff --git a/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.html b/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.html
new file mode 100644
index 00000000000..6c9f9785917
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Sixth Page
+
+
+
+ Sixth Page
+
+ Param One: {{paramOne}}
+
+
+ Param Two: {{paramTwo}}
+
+
\ No newline at end of file
diff --git a/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.module.ts b/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.module.ts
new file mode 100644
index 00000000000..b80bb576e53
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../..';
+import { SixthPage } from './sixth-page';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(SixthPage)
+ ],
+ declarations: [
+ SixthPage
+ ]
+})
+export class SixthPageModule { }
diff --git a/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.ts b/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.ts
new file mode 100644
index 00000000000..c97d3ee006e
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/sixth-page/sixth-page.ts
@@ -0,0 +1,19 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, NavParams } from '../../../../../..';
+
+@IonicPage({
+ segment: 'sixthPage/paramOne/:paramOne/paramTwo/:paramTwo'
+})
+@Component({
+ templateUrl: 'sixth-page.html'
+})
+export class SixthPage {
+
+ paramOne: string;
+ paramTwo: string;
+
+ constructor(public nav: NavController, public params: NavParams) {
+ this.paramOne = this.params.data.paramOne;
+ this.paramTwo = this.params.data.paramTwo;
+ }
+}
diff --git a/src/components/nav/test/toggle-basic/pages/third-page/third-page.html b/src/components/nav/test/toggle-basic/pages/third-page/third-page.html
new file mode 100644
index 00000000000..11059bf41fb
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/third-page/third-page.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+ Third Page
+
+
+
+ Third Page
+
+ Param One: {{paramOne}}
+
+
+ Param Two: {{paramTwo}}
+
+
\ No newline at end of file
diff --git a/src/components/nav/test/toggle-basic/pages/third-page/third-page.module.ts b/src/components/nav/test/toggle-basic/pages/third-page/third-page.module.ts
new file mode 100644
index 00000000000..3ae80405cc0
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/third-page/third-page.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../..';
+import { ThirdPage } from './third-page';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(ThirdPage)
+ ],
+ declarations: [
+ ThirdPage
+ ]
+})
+export class ThirdPageModule { }
diff --git a/src/components/nav/test/toggle-basic/pages/third-page/third-page.ts b/src/components/nav/test/toggle-basic/pages/third-page/third-page.ts
new file mode 100644
index 00000000000..119056c417f
--- /dev/null
+++ b/src/components/nav/test/toggle-basic/pages/third-page/third-page.ts
@@ -0,0 +1,19 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, NavParams } from '../../../../../..';
+
+@IonicPage({
+ segment: 'thirdPage/paramOne/:paramOne/paramTwo/:paramTwo'
+})
+@Component({
+ templateUrl: 'third-page.html'
+})
+export class ThirdPage {
+
+ paramOne: string;
+ paramTwo: string;
+
+ constructor(public nav: NavController, public params: NavParams) {
+ this.paramOne = this.params.data.paramOne;
+ this.paramTwo = this.params.data.paramTwo;
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/app/app.component.ts b/src/components/nav/test/toggle-tabs/app/app.component.ts
new file mode 100644
index 00000000000..32aa70ca599
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/app/app.component.ts
@@ -0,0 +1,38 @@
+import { Component, ViewChild } from '@angular/core';
+import { NavController } from '../../../../..';
+@Component({
+ template: `
+
+
+
+ Menu
+
+
+
+
+
+
+ Tabs One
+
+
+ Tabs Two
+
+
+
+
+
+ `
+})
+export class AppComponent {
+ root = 'RootPage';
+
+ @ViewChild('content') nav: NavController;
+
+ goToTabsOne() {
+ this.nav.setRoot('TabsOnePage');
+ }
+
+ goToTabsTwo() {
+ this.nav.setRoot('TabsTwoPage');
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/app/app.module.ts b/src/components/nav/test/toggle-tabs/app/app.module.ts
new file mode 100644
index 00000000000..55310fa2157
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/app/app.module.ts
@@ -0,0 +1,17 @@
+import { NgModule } from '@angular/core';
+import { BrowserModule } from '@angular/platform-browser';
+import { IonicApp, IonicModule } from '../../../../..';
+
+import { AppComponent } from './app.component';
+
+@NgModule({
+ declarations: [
+ AppComponent
+ ],
+ imports: [
+ BrowserModule,
+ IonicModule.forRoot(AppComponent, { swipeBackEnabled: true, preloadModules: true }),
+ ],
+ bootstrap: [IonicApp]
+})
+export class AppModule {}
diff --git a/src/components/nav/test/toggle-tabs/app/main.ts b/src/components/nav/test/toggle-tabs/app/main.ts
new file mode 100644
index 00000000000..6af7a5b2ae8
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/app/main.ts
@@ -0,0 +1,5 @@
+import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
+
+import { AppModule } from './app.module';
+
+platformBrowserDynamic().bootstrapModule(AppModule);
diff --git a/src/components/nav/test/toggle-tabs/pages/root-page/root-page.module.ts b/src/components/nav/test/toggle-tabs/pages/root-page/root-page.module.ts
new file mode 100644
index 00000000000..3e27b172874
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/root-page/root-page.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../..';
+import { RootPage } from './root-page';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(RootPage)
+ ],
+ declarations: [
+ RootPage
+ ]
+})
+export class RootPageModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/root-page/root-page.ts b/src/components/nav/test/toggle-tabs/pages/root-page/root-page.ts
new file mode 100644
index 00000000000..7621e1a693a
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/root-page/root-page.ts
@@ -0,0 +1,25 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, } from '../../../../../..';
+
+@IonicPage()
+@Component({
+ template: `
+
+
+
+
+
+ Root Page
+
+
+
+ Root Page
+ Toggle Menu
+
+ `
+})
+export class RootPage {
+
+ constructor(public nav: NavController) {
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-one/tab-one-page-one.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-one/tab-one-page-one.module.ts
new file mode 100644
index 00000000000..4559ff52d8a
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-one/tab-one-page-one.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsOneTabOnePageOne } from './tab-one-page-one';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsOneTabOnePageOne)
+ ],
+ declarations: [
+ TabsOneTabOnePageOne
+ ]
+})
+export class TabsOneTabOnePageOneModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-one/tab-one-page-one.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-one/tab-one-page-one.ts
new file mode 100644
index 00000000000..8a898300676
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-one/tab-one-page-one.ts
@@ -0,0 +1,30 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsOneTabOnePageOne'
+})
+@Component({
+ template: `
+
+
+
+
+
+ Tabs 1 Tab 1 Page 1
+
+
+
+ Tabs 1 Tab 1 Page 1
+ Go to Next Page
+
+ `
+})
+export class TabsOneTabOnePageOne {
+ constructor(public nav: NavController) {
+ }
+
+ nextPage() {
+ this.nav.push('TabsOneTabOnePageTwo', { userId: '123', name: 'Andy Bernard'});
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-three/tab-one-page-three.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-three/tab-one-page-three.module.ts
new file mode 100644
index 00000000000..72b667bef42
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-three/tab-one-page-three.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsOneTabOnePageThree } from './tab-one-page-three';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsOneTabOnePageThree)
+ ],
+ declarations: [
+ TabsOneTabOnePageThree
+ ]
+})
+export class TabsOneTabOnePageThreeModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-three/tab-one-page-three.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-three/tab-one-page-three.ts
new file mode 100644
index 00000000000..a0c950d3ac2
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-three/tab-one-page-three.ts
@@ -0,0 +1,35 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, NavParams } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsOneTabOnePageThree/paramOne/:paramOne/paramTwo/:paramTwo'
+})
+@Component({
+ template: `
+
+
+
+
+
+ Tabs 1 Tab 1 Page 3
+
+
+
+ Tabs 1 Tab 1 Page 3
+
+ Param One: {{paramOne}}
+
+
+ Name: {{paramTwo}}
+
+
+ `
+})
+export class TabsOneTabOnePageThree {
+ paramOne: string;
+ paramTwo: string;
+ constructor(public nav: NavController, navParams: NavParams) {
+ this.paramOne = navParams.data.paramOne;
+ this.paramTwo = navParams.data.paramTwo;
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-two/tab-one-page-two.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-two/tab-one-page-two.module.ts
new file mode 100644
index 00000000000..814d2c99e19
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-two/tab-one-page-two.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsOneTabOnePageTwo } from './tab-one-page-two';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsOneTabOnePageTwo)
+ ],
+ declarations: [
+ TabsOneTabOnePageTwo
+ ]
+})
+export class TabsOneTabOnePageTwoModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-two/tab-one-page-two.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-two/tab-one-page-two.ts
new file mode 100644
index 00000000000..c3179544c73
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-one-page-two/tab-one-page-two.ts
@@ -0,0 +1,40 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, NavParams } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsOneTabOnePageTwo/userId/:userId/name/:name'
+})
+@Component({
+ template: `
+
+
+
+
+
+ Tabs 1 Tab 1 Page 2
+
+
+
+ Tabs 1 Tab 1 Page 2
+
+ User ID: {{userId}}
+
+
+ Name: {{name}}
+
+ Next
+
+ `
+})
+export class TabsOneTabOnePageTwo {
+ userId: string;
+ name: string;
+ constructor(public nav: NavController, navParams: NavParams) {
+ this.userId = navParams.data.userId;
+ this.name = navParams.data.name;
+ }
+
+ goToNext() {
+ this.nav.push('TabsOneTabOnePageThree', { paramOne: 'Scranton', paramTwo: 'PA'});
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-one/tab-two-page-one.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-one/tab-two-page-one.module.ts
new file mode 100644
index 00000000000..56352b8d939
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-one/tab-two-page-one.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsOneTabTwoPageOne } from './tab-two-page-one';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsOneTabTwoPageOne)
+ ],
+ declarations: [
+ TabsOneTabTwoPageOne
+ ]
+})
+export class TabsOneTabTwoPageOneModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-one/tab-two-page-one.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-one/tab-two-page-one.ts
new file mode 100644
index 00000000000..a48a119f7f8
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-one/tab-two-page-one.ts
@@ -0,0 +1,30 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsOneTabTwoPageOne'
+})
+@Component({
+ template: `
+
+
+
+
+
+ Tabs 1 Tab 2 Page 1
+
+
+
+ Tabs 1 Tab 2 Page 1
+ Go to Next Page
+
+ `
+})
+export class TabsOneTabTwoPageOne {
+ constructor(public nav: NavController) {
+ }
+
+ nextPage() {
+ this.nav.push('TabsOneTabTwoPageTwo', { userId: '456', name: 'Stanley Hudson'});
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-three/tab-two-page-three.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-three/tab-two-page-three.module.ts
new file mode 100644
index 00000000000..356be3a980f
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-three/tab-two-page-three.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsOneTabTwoPageThree } from './tab-two-page-three';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsOneTabTwoPageThree)
+ ],
+ declarations: [
+ TabsOneTabTwoPageThree
+ ]
+})
+export class TabsOneTabTwoPageThreeModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-three/tab-two-page-three.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-three/tab-two-page-three.ts
new file mode 100644
index 00000000000..dbd6f582aff
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-three/tab-two-page-three.ts
@@ -0,0 +1,35 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, NavParams } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsOneTabTwoPageThree/paramOne/:paramOne/paramTwo/:paramTwo'
+})
+@Component({
+ template: `
+
+
+
+
+
+ Tabs 1 Tab 2 Page 3
+
+
+
+ Tabs 1 Tab 2 Page 3
+
+ Param One: {{userId}}
+
+
+ Param Two: {{name}}
+
+
+ `
+})
+export class TabsOneTabTwoPageThree {
+ paramOne: string;
+ paramTwo: string;
+ constructor(public nav: NavController, navParams: NavParams) {
+ this.paramOne = navParams.data.paramOne;
+ this.paramTwo = navParams.data.paramTwo;
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-two/tab-two-page-two.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-two/tab-two-page-two.module.ts
new file mode 100644
index 00000000000..493f9e41b5a
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-two/tab-two-page-two.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsOneTabTwoPageTwo } from './tab-two-page-two';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsOneTabTwoPageTwo)
+ ],
+ declarations: [
+ TabsOneTabTwoPageTwo
+ ]
+})
+export class TabsOneTabTwoPageTwoModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-two/tab-two-page-two.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-two/tab-two-page-two.ts
new file mode 100644
index 00000000000..d2f2f9a9e15
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tab-two-page-two/tab-two-page-two.ts
@@ -0,0 +1,40 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, NavParams } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsOneTabTwoPageTwo/userId/:userId/name/:name'
+})
+@Component({
+ template: `
+
+
+
+
+
+ Tabs 1 Tab 2 Page 2
+
+
+
+ Tabs 1 Tab 2 Page 2
+
+ User ID: {{userId}}
+
+
+ Name: {{name}}
+
+ Next
+
+ `
+})
+export class TabsOneTabTwoPageTwo {
+ userId: string;
+ name: string;
+ constructor(public nav: NavController, navParams: NavParams) {
+ this.userId = navParams.data.userId;
+ this.name = navParams.data.name;
+ }
+
+ goToNext() {
+ this.nav.push('TabsOneTabTwoPageThree', { paramOne: 'Nashua', paramTwo: 'NH'});
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tabs-one-page/tabs-one-page.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tabs-one-page/tabs-one-page.module.ts
new file mode 100644
index 00000000000..ae8f5fd3336
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tabs-one-page/tabs-one-page.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsOnePage } from './tabs-one-page';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsOnePage)
+ ],
+ declarations: [
+ TabsOnePage
+ ]
+})
+export class TabsOnePageModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-one/tabs-one-page/tabs-one-page.ts b/src/components/nav/test/toggle-tabs/pages/tabs-one/tabs-one-page/tabs-one-page.ts
new file mode 100644
index 00000000000..b024e938a08
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-one/tabs-one-page/tabs-one-page.ts
@@ -0,0 +1,21 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsOnePage'
+})
+@Component({
+ template: `
+
+
+
+
+ `
+})
+export class TabsOnePage {
+
+ tabs1Tab1: string = 'TabsOneTabOnePageOne';
+ tabs1Tab2: string = 'TabsOneTabTwoPageOne';
+ constructor(public nav: NavController) {
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-one/tab-one-page-one.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-one/tab-one-page-one.module.ts
new file mode 100644
index 00000000000..e6cef890720
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-one/tab-one-page-one.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsTwoTabOnePageOne } from './tab-one-page-one';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsTwoTabOnePageOne)
+ ],
+ declarations: [
+ TabsTwoTabOnePageOne
+ ]
+})
+export class TabsTwoTabOnePageOneModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-one/tab-one-page-one.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-one/tab-one-page-one.ts
new file mode 100644
index 00000000000..01267e37c30
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-one/tab-one-page-one.ts
@@ -0,0 +1,30 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsTwoTabOnePageOne'
+})
+@Component({
+ template: `
+
+
+
+
+
+ Tabs 2 Tab 1 Page 1
+
+
+
+ Tabs 2 Tab 1 Page 1
+ Go to Next Page
+
+ `
+})
+export class TabsTwoTabOnePageOne {
+ constructor(public nav: NavController) {
+ }
+
+ nextPage() {
+ this.nav.push('TabsTwoTabOnePageTwo', { userId: '234', name: 'Phillis Vance - Vance Refridgeration'});
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-three/tab-one-page-three.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-three/tab-one-page-three.module.ts
new file mode 100644
index 00000000000..51e8d257f6d
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-three/tab-one-page-three.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsTwoTabOnePageThree } from './tab-one-page-three';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsTwoTabOnePageThree)
+ ],
+ declarations: [
+ TabsTwoTabOnePageThree
+ ]
+})
+export class TabsTwoTabOnePageThreeModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-three/tab-one-page-three.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-three/tab-one-page-three.ts
new file mode 100644
index 00000000000..e2cb9e4c660
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-three/tab-one-page-three.ts
@@ -0,0 +1,35 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, NavParams } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsTwoTabOnePageThree/paramOne/:paramOne/paramTwo/:paramTwo'
+})
+@Component({
+ template: `
+
+
+
+
+
+ Tabs 2 Tab 1 Page 3
+
+
+
+ Tabs 2 Tab 1 Page 3
+
+ Param One: {{paramOne}}
+
+
+ Param Two: {{paramTwo}}
+
+
+ `
+})
+export class TabsTwoTabOnePageThree {
+ paramOne: string;
+ paramTwo: string;
+ constructor(public nav: NavController, navParams: NavParams) {
+ this.paramOne = navParams.data.paramOne;
+ this.paramTwo = navParams.data.paramTwo;
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-two/tab-one-page-two.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-two/tab-one-page-two.module.ts
new file mode 100644
index 00000000000..d9518047a08
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-two/tab-one-page-two.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsTwoTabOnePageTwo } from './tab-one-page-two';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsTwoTabOnePageTwo)
+ ],
+ declarations: [
+ TabsTwoTabOnePageTwo
+ ]
+})
+export class TabsTwoTabOnePageTwoModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-two/tab-one-page-two.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-two/tab-one-page-two.ts
new file mode 100644
index 00000000000..eeb474dd933
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-one-page-two/tab-one-page-two.ts
@@ -0,0 +1,40 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, NavParams } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsTwoTabOnePageTwo/userId/:userId/name/:name'
+})
+@Component({
+ template: `
+
+
+
+
+
+ Tabs 2 Tab 1 Page 2
+
+
+
+ Tabs 2 Tab 1 Page 2
+
+ User ID: {{userId}}
+
+
+ Name: {{name}}
+
+ Next
+
+ `
+})
+export class TabsTwoTabOnePageTwo {
+ userId: string;
+ name: string;
+ constructor(public nav: NavController, navParams: NavParams) {
+ this.userId = navParams.data.userId;
+ this.name = navParams.data.name;
+ }
+
+ goToNext() {
+ this.nav.push('TabsTwoTabOnePageThree', { paramOne: 'Stamford', paramTwo: 'CT'});
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-one/tab-two-page-one.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-one/tab-two-page-one.module.ts
new file mode 100644
index 00000000000..0e21ef3d25a
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-one/tab-two-page-one.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsTwoTabTwoPageOne } from './tab-two-page-one';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsTwoTabTwoPageOne)
+ ],
+ declarations: [
+ TabsTwoTabTwoPageOne
+ ]
+})
+export class TabsTwoTabTwoPageOneModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-one/tab-two-page-one.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-one/tab-two-page-one.ts
new file mode 100644
index 00000000000..7bf9e2512a0
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-one/tab-two-page-one.ts
@@ -0,0 +1,30 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsTwoTabTwoPageOne'
+})
+@Component({
+ template: `
+
+
+
+
+
+ Tabs 2 Tab 2 Page 1
+
+
+
+ Tabs 2 Tab 2 Page 1
+ Go to Next Page
+
+ `
+})
+export class TabsTwoTabTwoPageOne {
+ constructor(public nav: NavController) {
+ }
+
+ nextPage() {
+ this.nav.push('TabsTwoTabTwoPageTwo', { userId: '456', name: 'Michael Scarn'});
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-three/tab-two-page-three.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-three/tab-two-page-three.module.ts
new file mode 100644
index 00000000000..0f4524411a8
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-three/tab-two-page-three.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsTwoTabTwoPageThree } from './tab-two-page-three';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsTwoTabTwoPageThree)
+ ],
+ declarations: [
+ TabsTwoTabTwoPageThree
+ ]
+})
+export class TabsTwoTabTwoPageThreeModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-three/tab-two-page-three.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-three/tab-two-page-three.ts
new file mode 100644
index 00000000000..3b4679c1d06
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-three/tab-two-page-three.ts
@@ -0,0 +1,35 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, NavParams } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsTwoTabTwoPageThree/paramOne/:paramOne/paramTwo/:paramTwo'
+})
+@Component({
+ template: `
+
+
+
+
+
+ Tabs 2 Tab 2 Page 3
+
+
+
+ Tabs 2 Tab 2 Page 3
+
+ Param One: {{paramOne}}
+
+
+ Param Two: {{paramTwo}}
+
+
+ `
+})
+export class TabsTwoTabTwoPageThree {
+ paramOne: string;
+ paramTwo: string;
+ constructor(public nav: NavController, navParams: NavParams) {
+ this.paramOne = navParams.data.paramOne;
+ this.paramTwo = navParams.data.paramTwo;
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-two/tab-two-page-two.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-two/tab-two-page-two.module.ts
new file mode 100644
index 00000000000..bdbddc50cde
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-two/tab-two-page-two.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsTwoTabTwoPageTwo } from './tab-two-page-two';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsTwoTabTwoPageTwo)
+ ],
+ declarations: [
+ TabsTwoTabTwoPageTwo
+ ]
+})
+export class TabsTwoTabTwoPageTwoModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-two/tab-two-page-two.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-two/tab-two-page-two.ts
new file mode 100644
index 00000000000..d5047b15d2e
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tab-two-page-two/tab-two-page-two.ts
@@ -0,0 +1,40 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, NavParams } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsTwoTabTwoPageTwo/userId/:userId/name/:name'
+})
+@Component({
+ template: `
+
+
+
+
+
+ Tabs 2 Tab 2 Page 2
+
+
+
+ Tabs 2 Tab 2 Page 2
+
+ User ID: {{userId}}
+
+
+ Name: {{name}}
+
+ Next
+
+ `
+})
+export class TabsTwoTabTwoPageTwo {
+ userId: string;
+ name: string;
+ constructor(public nav: NavController, navParams: NavParams) {
+ this.userId = navParams.data.userId;
+ this.name = navParams.data.name;
+ }
+
+ next() {
+ this.nav.push('TabsTwoTabTwoPageThree', { paramOne: 'Albany', paramTwo: 'NY'});
+ }
+}
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tabs-two-page/tabs-two-page.module.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tabs-two-page/tabs-two-page.module.ts
new file mode 100644
index 00000000000..31ada2039c4
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tabs-two-page/tabs-two-page.module.ts
@@ -0,0 +1,13 @@
+import { NgModule } from '@angular/core';
+import { IonicPageModule } from '../../../../../../..';
+import { TabsTwoPage } from './tabs-two-page';
+
+@NgModule({
+ imports: [
+ IonicPageModule.forChild(TabsTwoPage)
+ ],
+ declarations: [
+ TabsTwoPage
+ ]
+})
+export class TabsTwoPageModule { }
diff --git a/src/components/nav/test/toggle-tabs/pages/tabs-two/tabs-two-page/tabs-two-page.ts b/src/components/nav/test/toggle-tabs/pages/tabs-two/tabs-two-page/tabs-two-page.ts
new file mode 100644
index 00000000000..c65240f4be2
--- /dev/null
+++ b/src/components/nav/test/toggle-tabs/pages/tabs-two/tabs-two-page/tabs-two-page.ts
@@ -0,0 +1,21 @@
+import { Component } from '@angular/core';
+import { IonicPage, NavController, } from '../../../../../../..';
+
+@IonicPage({
+ segment: 'TabsTwoPage'
+})
+@Component({
+ template: `
+
+
+
+
+ `
+})
+export class TabsTwoPage {
+
+ tabs2Tab1: string = 'TabsTwoTabOnePageOne';
+ tabs2Tab2: string = 'TabsTwoTabTwoPageOne';
+ constructor(public nav: NavController) {
+ }
+}
diff --git a/src/navigation/url-serializer.ts b/src/navigation/url-serializer.ts
index 411290f3688..d6f1034b067 100644
--- a/src/navigation/url-serializer.ts
+++ b/src/navigation/url-serializer.ts
@@ -2,7 +2,7 @@ import { OpaqueToken } from '@angular/core';
import { App } from '../components/app/app';
import { NavigationContainer } from './navigation-container';
-import { DeepLinkConfig, DehydratedSegment, DehydratedSegmentPair, NavGroup, NavLink, NavSegment } from './nav-util';
+import { DeepLinkConfig, DehydratedSegment, DehydratedSegmentPair, isNav, isTab, isTabs, NavGroup, NavLink, NavSegment } from './nav-util';
import { isArray, isBlank, isPresent } from '../util/util';
@@ -372,8 +372,42 @@ export function hydrateSegmentsWithNav(app: App, dehydratedSegmentPairs: Dehydra
// the simple solution is to just use the last child
// because that is probably what the user wants anyway
// remember, do not harm, even if it makes our shizzle ugly
- segments.push(hydrateSegment(dehydratedSegment, navs[navs.length - 1]));
- navs = navs[navs.length - 1].getActiveChildNavs();
+
+
+ // Update 9/30/17 - well, we know now that we can be in all sorts of weird
+ // states when we hit this
+ // one being a state with a root Nav, and then toggling between PageOne (with an `ion-tabs` component)
+ // and PageTwo (with an `ion-tabs` component)
+ // when you go from a page with tabs to a different page with tabs
+ // as of 9/30/17 we do not update the URL correctly
+ // and if we change how that works
+ // we'll probably break a lot of apps in other, unexpected ways
+ // so the best answer seems to be to check if an existing nav's active page matches the
+ // url segment. If it does, then we're in a weird state and don't use the segment.
+ // if an existing nav's active page does NOT match the segment, then it's
+ // probably fair game to use
+ let probableSegment = hydrateSegment(dehydratedSegment, navs[navs.length - 1]);
+ for (const nav of navs) {
+ if (nav === navs[navs.length - 1]) {
+ break;
+ }
+
+ if (isTabs(nav)) {
+ if (nav.getActiveChildNavs().length) {
+ const tab = nav.getActiveChildNavs()[0];
+ const activeView = (tab as any).getActive();
+ if (activeView.component === probableSegment.component) {
+ probableSegment = null;
+ break;
+ }
+ }
+ }
+ }
+
+ if (probableSegment) {
+ segments.push(probableSegment);
+ navs = navs[navs.length - 1].getActiveChildNavs();
+ }
} else {
break;
}