0

Lorsque j'ouvre une fenêtre contextuelle pour OAuth, et retour parAngular2 Router - window.opener: Lost Détection de changement à forwar

window.opener.closeCallbackFunction(); 

alors mon ChangeDetection ne fonctionne plus sur la page transmise.

function _window(): any { 
    return window; 
} 

@Component({ 
    selector: 'app-register', 
    templateUrl: './register.component.html', 
}) 
export class ConsultantRegisterComponent { 

    constructor() { 
    } 

    openPopup() { 
     let _this = this; 
     let selfWindow = _window(); 
     let popup = lib.PopupCenter('/RegisterWithFacebook', 'Sign In', 600, 400); 

     selfWindow.closeCallbackFunction = function() { 
      popup.close(); 
      _this.forward.call(_this); 
     }; 

    } 

    forward() { 
     this.router.navigate(['/register-oauth']); 
    } 
} 

Est-ce un bug, ou est-ce que je fais quelque chose de mal?

Répondre

0

D'accord, une solution googlé: juste besoin de le faire avec NgZone:

function _window(): any { 
    return window; 
} 

@Component({ 
    selector: 'app-register', 
    templateUrl: './register.component.html', 
}) 
export class ConsultantRegisterComponent { 

    constructor(private _zone:NgZone) { 
    } 

    openPopup() { 
     let _this = this; 
     let selfWindow = _window(); 
     let popup = lib.PopupCenter('/RegisterWithFacebook', 'Sign In', 600, 400); 

     selfWindow.closeCallbackFunction = function() { 
      popup.close(); 
      _this.forward.call(_this); 
     }; 

    } 

    forward() { 
     this._zone.run(() => { 
      this.router.navigate(['/register-oauth']); 
     }); 
    } 
}