diff --git a/angular/src/directives/navigation/stack-controller.ts b/angular/src/directives/navigation/stack-controller.ts index 3f48e1763e..2f840314a6 100644 --- a/angular/src/directives/navigation/stack-controller.ts +++ b/angular/src/directives/navigation/stack-controller.ts @@ -19,11 +19,11 @@ export class StackController { private zone: NgZone, ) {} - createView(enteringRef: ComponentRef, route: ActivatedRoute): RouteView { + createView(enteringRef: ComponentRef, activatedRoute: ActivatedRoute): RouteView { return { ref: enteringRef, element: (enteringRef && enteringRef.location && enteringRef.location.nativeElement) as HTMLElement, - url: this.getUrl(route) + url: this.getUrl(activatedRoute) }; } @@ -134,6 +134,7 @@ export class StackController { } if (enteringView) { enteringView.ref.changeDetectorRef.reattach(); + enteringView.ref.changeDetectorRef.markForCheck(); } const enteringEl = enteringView ? enteringView.element : undefined; const leavingEl = leavingView ? leavingView.element : undefined; diff --git a/angular/test/test-app/e2e/src/utils.ts b/angular/test/test-app/e2e/src/utils.ts index b3ed3f6ce0..56900e9402 100644 --- a/angular/test/test-app/e2e/src/utils.ts +++ b/angular/test/test-app/e2e/src/utils.ts @@ -33,7 +33,7 @@ export interface LifeCycleCount { } export async function testLifeCycle(selector: string, expected: LifeCycleCount) { - const page = element(by.css(selector)); + expect(await getText(`${selector} #ngOnInit`)).toEqual('1'); expect(await getText(`${selector} #ionViewWillEnter`)).toEqual(expected.ionViewWillEnter.toString()); expect(await getText(`${selector} #ionViewDidEnter`)).toEqual(expected.ionViewDidEnter.toString()); expect(await getText(`${selector} #ionViewWillLeave`)).toEqual(expected.ionViewWillLeave.toString()); diff --git a/angular/test/test-app/src/app/modal-example/modal-example.component.html b/angular/test/test-app/src/app/modal-example/modal-example.component.html index bdac0eb30d..93f4ff2f96 100644 --- a/angular/test/test-app/src/app/modal-example/modal-example.component.html +++ b/angular/test/test-app/src/app/modal-example/modal-example.component.html @@ -11,7 +11,7 @@

Value

{{value}}

- +

ngOnInit: {{onInit}}

ionViewWillEnter: {{willEnter}}

ionViewDidEnter: {{didEnter}}

ionViewWillLeave: {{willLeave}}

diff --git a/angular/test/test-app/src/app/modal-example/modal-example.component.ts b/angular/test/test-app/src/app/modal-example/modal-example.component.ts index 2505935a08..9b6babb884 100644 --- a/angular/test/test-app/src/app/modal-example/modal-example.component.ts +++ b/angular/test/test-app/src/app/modal-example/modal-example.component.ts @@ -1,14 +1,15 @@ -import { Component, Input, NgZone } from '@angular/core'; +import { Component, Input, NgZone, OnInit } from '@angular/core'; import { ModalController } from '@ionic/angular'; @Component({ selector: 'app-modal-example', templateUrl: './modal-example.component.html', }) -export class ModalExampleComponent { +export class ModalExampleComponent implements OnInit { @Input() value: string; + onInit = 0; willEnter = 0; didEnter = 0; willLeave = 0; @@ -18,6 +19,11 @@ export class ModalExampleComponent { private modalCtrl: ModalController ) {} + ngOnInit() { + NgZone.assertInAngularZone(); + this.onInit++; + } + ionViewWillEnter() { NgZone.assertInAngularZone(); this.willEnter++; diff --git a/angular/test/test-app/src/app/router-link-page/router-link-page.component.html b/angular/test/test-app/src/app/router-link-page/router-link-page.component.html index c9d499e405..c79af6e48f 100644 --- a/angular/test/test-app/src/app/router-link-page/router-link-page.component.html +++ b/angular/test/test-app/src/app/router-link-page/router-link-page.component.html @@ -8,6 +8,7 @@ router-link page +

ngOnInit: {{onInit}}

ionViewWillEnter: {{willEnter}}

ionViewDidEnter: {{didEnter}}

ionViewWillLeave: {{willLeave}}

diff --git a/angular/test/test-app/src/app/router-link-page/router-link-page.component.ts b/angular/test/test-app/src/app/router-link-page/router-link-page.component.ts index 599e072718..f54c90f41c 100644 --- a/angular/test/test-app/src/app/router-link-page/router-link-page.component.ts +++ b/angular/test/test-app/src/app/router-link-page/router-link-page.component.ts @@ -4,13 +4,19 @@ import { Component, OnInit, NgZone } from '@angular/core'; selector: 'app-router-link-page', templateUrl: './router-link-page.component.html', }) -export class RouterLinkPageComponent { +export class RouterLinkPageComponent implements OnInit { + onInit = 0; willEnter = 0; didEnter = 0; willLeave = 0; didLeave = 0; + ngOnInit() { + NgZone.assertInAngularZone(); + this.onInit++; + } + ionViewWillEnter() { NgZone.assertInAngularZone(); this.willEnter++; diff --git a/angular/test/test-app/src/app/router-link/router-link.component.html b/angular/test/test-app/src/app/router-link/router-link.component.html index f4d70ed57c..829253e534 100644 --- a/angular/test/test-app/src/app/router-link/router-link.component.html +++ b/angular/test/test-app/src/app/router-link/router-link.component.html @@ -6,6 +6,7 @@ +

ngOnInit: {{onInit}}

ionViewWillEnter: {{willEnter}}

ionViewDidEnter: {{didEnter}}

ionViewWillLeave: {{willLeave}}

diff --git a/angular/test/test-app/src/app/router-link/router-link.component.ts b/angular/test/test-app/src/app/router-link/router-link.component.ts index 89320701aa..5022c5a1b7 100644 --- a/angular/test/test-app/src/app/router-link/router-link.component.ts +++ b/angular/test/test-app/src/app/router-link/router-link.component.ts @@ -1,4 +1,4 @@ -import { Component, NgZone } from '@angular/core'; +import { Component, NgZone, OnInit } from '@angular/core'; import { NavController } from '@ionic/angular'; import { Router } from '@angular/router'; @@ -6,8 +6,9 @@ import { Router } from '@angular/router'; selector: 'app-router-link', templateUrl: './router-link.component.html', }) -export class RouterLinkComponent { +export class RouterLinkComponent implements OnInit { + onInit = 0; willEnter = 0; didEnter = 0; willLeave = 0; @@ -34,6 +35,11 @@ export class RouterLinkComponent { this.navCtrl.navigateRoot('/router-link-page'); } + ngOnInit() { + NgZone.assertInAngularZone(); + this.onInit++; + } + ionViewWillEnter() { NgZone.assertInAngularZone(); this.willEnter++;