fix(angular): race condition when fast navigation (#17197)

fixes #17194
fixes #16449
fixes #15413
This commit is contained in:
Manu MA
2019-01-22 15:03:43 +01:00
committed by GitHub
parent 3defbf3a8f
commit a945b03144
11 changed files with 165 additions and 56 deletions

View File

@@ -18,6 +18,9 @@ import { ViewChildComponent } from './view-child/view-child.component';
import { ProvidersComponent } from './providers/providers.component';
import { SlidesComponent } from './slides/slides.component';
import { FormComponent } from './form/form.component';
import { NavigationPage1Component } from './navigation-page1/navigation-page1.component';
import { NavigationPage2Component } from './navigation-page2/navigation-page2.component';
import { NavigationPage3Component } from './navigation-page3/navigation-page3.component';
const routes: Routes = [
{ path: '', component: HomePageComponent },
@@ -32,6 +35,14 @@ const routes: Routes = [
{ path: 'virtual-scroll', component: VirtualScrollComponent },
{ path: 'virtual-scroll-detail/:itemId', component: VirtualScrollDetailComponent },
{ path: 'tabs', redirectTo: '/tabs/account', pathMatch: 'full' },
{
path: 'navigation',
children: [
{ path: 'page1', component: NavigationPage1Component },
{ path: 'page2', component: NavigationPage2Component },
{ path: 'page3', component: NavigationPage3Component }
]
},
{
path: 'tabs',
component: TabsComponent,

View File

@@ -27,6 +27,9 @@ import { ViewChildComponent } from './view-child/view-child.component';
import { ProvidersComponent } from './providers/providers.component';
import { SlidesComponent } from './slides/slides.component';
import { FormComponent } from './form/form.component';
import { NavigationPage1Component } from './navigation-page1/navigation-page1.component';
import { NavigationPage2Component } from './navigation-page2/navigation-page2.component';
import { NavigationPage3Component } from './navigation-page3/navigation-page3.component';
@NgModule({
declarations: [
@@ -51,7 +54,10 @@ import { FormComponent } from './form/form.component';
ViewChildComponent,
ProvidersComponent,
SlidesComponent,
FormComponent
FormComponent,
NavigationPage1Component,
NavigationPage2Component,
NavigationPage3Component
],
imports: [
BrowserModule,

View File

@@ -0,0 +1,3 @@
<p>
navigation-page1 works!
</p>

View File

@@ -0,0 +1,20 @@
import { Component } from '@angular/core';
import { NavController } from '@ionic/angular';
let count = 0;
@Component({
selector: 'app-navigation-page1',
templateUrl: './navigation-page1.component.html',
})
export class NavigationPage1Component {
constructor(
private navController: NavController
) {}
ionViewDidEnter() {
if (count < 1) {
this.navController.navigateBack('/navigation/page2');
}
count++;
}
}

View File

@@ -0,0 +1,3 @@
<p>
navigation-page2 works!
</p>

View File

@@ -0,0 +1,17 @@
import { Component } from '@angular/core';
import { NavController } from '@ionic/angular';
@Component({
selector: 'app-navigation-page2',
templateUrl: './navigation-page2.component.html',
})
export class NavigationPage2Component {
constructor(
private navController: NavController
) {}
ionViewDidEnter() {
this.navController.navigateForward('/navigation/page1');
}
}

View File

@@ -0,0 +1,3 @@
<p>
navigation-page3 works!
</p>

View File

@@ -0,0 +1,16 @@
import { Component, OnInit } from '@angular/core';
import { NavController } from '@ionic/angular';
@Component({
selector: 'app-navigation-page3',
templateUrl: './navigation-page3.component.html',
})
export class NavigationPage3Component {
constructor(
private navController: NavController
) {}
ionViewDidEnter() {
this.navController.navigateRoot('/navigation/page2');
}
}