Skip to content

bug(nav): lifecycle events inside ion-nav fire incorrectly #25675

Open
@DwieDima

Description

@DwieDima

Prerequisites

Ionic Framework Version

  • v4.x
  • v5.x
  • v6.x
  • Nightly

Current Behavior

I've come across with some strange behaviour, when you present a page using ModalControllerwhich wraps ion-nav.

Parent Page

  public async openModal() {
    const modal = await this.modalController.create({
      component: ModalOutletPage,
      componentProps: { component: AddCardPage },
    });

    await modal.present();
  }

Modal Outlet Page

export class ModalOutletPage implements OnInit {
  @Input() public component: HTMLElement;
  @Input() public componentProps: unknown;
}
<ion-nav [root]="component" [rootParams]="componentProps"></ion-nav>

in this test i console.log() ionViewDidEnter(), ionViewDidLeave(), ngOnInit(), ngOnDestroy() inside add-card.page.ts

First time opening modal:

on open

  1. ionViewDidEnter trigger

on close

  1. ngOnInit trigger
  2. ngOnDestroy trigger

second time opening modal:

on open

  1. ngOnInit trigger
  2. ionViewDidEnter trigger twice
  3. ionViewDidLeave trigger
  4. ngOnDestroy trigger

on close

  1. ngOnInit trigger
  2. ngOnDestroy trigger
Bildschirmaufnahme.2022-07-25.um.15.06.01.mov

UPDATE

This is the behaviour, if i remove changeDetection: ChangeDetectionStrategy.OnPush inside modal-outlet.page.ts:

Bildschirmaufnahme.2022-07-25.um.15.24.59.mov

Expected Behavior

Lifecycle events should trigger correctly

Steps to Reproduce

see video

Code Reproduction URL

https://github.com/DwieDima/ion-nav-lifecycle-bug

Ionic Info

Ionic CLI : 5.4.16
Ionic Framework : @ionic/angular 6.1.15
@angular-devkit/build-angular : 14.1.0
@angular-devkit/schematics : 13.2.6
@angular/cli : 14.1.0
@ionic/angular-toolkit : 6.1.0

Utility:

cordova-res : not installed
native-run : not installed

System:

NodeJS : v16.14.2
npm : 8.5.0
OS : macOS Monterey

Additional Information

maybe related to #25638

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions