@@ -352,12 +352,19 @@ export class PageRouterOutlet implements OnDestroy { // tslint:disable-line:dire
352352 // Add it to the new page
353353 page . content = componentView ;
354354
355- page . on ( Page . navigatedFromEvent , ( < any > global ) . Zone . current . wrap ( ( args : NavigatedData ) => {
355+ const navigatedFromCallback = ( < any > global ) . Zone . current . wrap ( ( args : NavigatedData ) => {
356356 if ( args . isBackNavigation ) {
357357 this . locationStrategy . _beginBackPageNavigation ( this . frame ) ;
358358 this . locationStrategy . back ( null , this . frame ) ;
359359 }
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+ } ) ;
361368
362369 const navOptions = this . locationStrategy . _beginPageNavigation ( this . frame ) ;
363370
@@ -367,14 +374,15 @@ export class PageRouterOutlet implements OnDestroy { // tslint:disable-line:dire
367374 if ( this . outlet ) {
368375 this . routeReuseStrategy . clearCache ( this . outlet . outletKeys [ 0 ] ) ;
369376 }
370- page . off ( Page . navigatedToEvent , clearCallback ) ;
371377 } ) ;
372378
373- page . on ( Page . navigatedToEvent , clearCallback ) ;
379+ page . once ( Page . navigatedToEvent , clearCallback ) ;
374380 }
375381
376382 this . frame . navigate ( {
377- create : ( ) => { return page ; } ,
383+ create ( ) {
384+ return page ;
385+ } ,
378386 clearHistory : navOptions . clearHistory ,
379387 animated : navOptions . animated ,
380388 transition : navOptions . transition
0 commit comments