@@ -352,12 +352,19 @@ export class PageRouterOutlet implements OnDestroy { // tslint:disable-line:dire
352
352
// Add it to the new page
353
353
page . content = componentView ;
354
354
355
- page . on ( Page . navigatedFromEvent , ( < any > global ) . Zone . current . wrap ( ( args : NavigatedData ) => {
355
+ const navigatedFromCallback = ( < any > global ) . Zone . current . wrap ( ( args : NavigatedData ) => {
356
356
if ( args . isBackNavigation ) {
357
357
this . locationStrategy . _beginBackPageNavigation ( this . frame ) ;
358
358
this . locationStrategy . back ( null , this . frame ) ;
359
359
}
360
- } ) ) ;
360
+ } ) ;
361
+ page . on ( Page . navigatedFromEvent , navigatedFromCallback ) ;
362
+ componentRef . onDestroy ( ( ) => {
363
+ if ( page ) {
364
+ page . off ( Page . navigatedFromEvent , navigatedFromCallback ) ;
365
+ page = null ;
366
+ }
367
+ } ) ;
361
368
362
369
const navOptions = this . locationStrategy . _beginPageNavigation ( this . frame ) ;
363
370
@@ -367,14 +374,15 @@ export class PageRouterOutlet implements OnDestroy { // tslint:disable-line:dire
367
374
if ( this . outlet ) {
368
375
this . routeReuseStrategy . clearCache ( this . outlet . outletKeys [ 0 ] ) ;
369
376
}
370
- page . off ( Page . navigatedToEvent , clearCallback ) ;
371
377
} ) ;
372
378
373
- page . on ( Page . navigatedToEvent , clearCallback ) ;
379
+ page . once ( Page . navigatedToEvent , clearCallback ) ;
374
380
}
375
381
376
382
this . frame . navigate ( {
377
- create : ( ) => { return page ; } ,
383
+ create ( ) {
384
+ return page ;
385
+ } ,
378
386
clearHistory : navOptions . clearHistory ,
379
387
animated : navOptions . animated ,
380
388
transition : navOptions . transition
0 commit comments