0

Wenn ich ein Popup für OAuth öffnen und Rückkehr überAngular2 Router - window.opener: Verlorene Änderungserkennung bei forwar

window.opener.closeCallbackFunction(); 

dann ist mein Change nicht mehr auf der Seite weitergeleitet zu arbeiten.

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']); 
    } 
} 

Ist das ein Fehler, oder mache ich etwas falsch?

Antwort

0

Okay, googeln eine Lösung: nur benötigt es mit NgZone zu tun:

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']); 
     }); 
    } 
}