2017-03-23 10 views
6

@HostListener Hook verwenden, aber Bestätigungsdialog (fragt: Möchten Sie diese Seite verlassen? ... oder Wollen Sie diese Seite neu laden?) Wird nicht angezeigt .onbeforeunload Bestätigungsdialog wird nicht angezeigt, wenn angular2 @HostListener verwendet wird

Der Code funktioniert, aber der Bestätigungsdialog wird nicht angezeigt.

Hier ist, was ich habe:

@HostListener('window:beforeunload', ['$event']) 
public doSomething($event) { 
    console.log("do I see this?") // <---- this logs to the console. 

    return "something else"; 
} 

Aber ich das nicht sehen:

enter image description here

+0

Schauen Sie in candeactivate für dieses Ich denke, –

+0

Ich denke, das ist, weil angular Bindings den zurückgegebenen Wert ändern. Wenn Sie 'true' zurückgeben, wird es als' preventDefault() 'verwendet. Ich nehme an, dass Ihr Code, der einen String zurückgibt, sich nicht wie erwartet verhält oder wie 'beforeunload' erfordert. Verwenden Sie stattdessen 'window.addEventListener (...)' statt dessen. –

+0

danke @ GünterZöchbauer wenn ich 'false' zurückgebe, funktioniert es wie erwartet. Aber wie gesagt, es ist durchaus möglich, dass die eckigen Bindungen den Rückgabewert modifizieren. – raneshu

Antwort

4

Rückkehr false anstelle der Zeichenfolge "something else" behebt das Problem und der Bestätigungsdialog angezeigt.

Es ist durchaus möglich, dass Winkel Bindings den Rückgabewert

1

Sie benötigen modifizieren

return $event.returnValue = "something"; 

jedoch in modernen Browsern zurückzukehren, die Nachricht, die Sie festgelegt wird nicht angezeigt. Die Browser zeigen einfach ihren Browser defaults

0

Statt false der Rückkehr Sie $event.returnValue = "your text"

Moderne Browser zurückgeben müssen nicht Ihren eingegebenen Text zeigen.

Verwandte Themen