2017-10-20 53 views
0

コンポーネントがアンロードされる前に自分で作成したポストメソッドを呼び出そうとしていますが、機能しません。@HostListener( 'window:beforeunload')を使用してメソッドを呼び出すにはどうすればよいですか?

@HostListenerにブレークポイントを設定し、別のコンポーネントを開いたときにブレークポイントをブレークしません。

私はデバッグにChromeを使用していますが、別のコンポーネントを開くとブレークするunloadとbeforeunloadのイベントリスナーブレークポイントがオンになりました。

enter image description here

私は私のコードで何かが足りないのですか?

import { Component, OnInit, HostListener } from '@angular/core'; 

Component({ 
    templateUrl: 'new-component.html'  
}) 

export class NewComponent implements OnInit { 
    @HostListener('window:beforeunload') onBeforeUnload() { 
      PostCall(); 
    } 
} 

答えて

1

window:beforeunloadは右、実際にページをアンロードする前にトリガされ、ブラウザのイベントです。

別のコンポーネントに移動すると、実際にページをアンロードしていません。

あなたがする必要があるのは、コンポーネントが破棄されるときに呼び出されるngOnDestroyです。

https://angular.io/api/core/OnDestroy

例:以下のインタフェースを実装

export class NewComponent implements OnDestroy{ 
    ngOnDestroy() { 
      PostCall(); 
    } 
} 
0

このようにしてみてください。

@HostListener('window:unload', ['$event']) 
unloadHandler(event) { 
    this.PostCall(); 
} 

@HostListener('window:beforeunload', ['$event']) 
beforeUnloadHander(event) { 
    return false; 
} 

PostCall() { 
    console.log('PostCall'); 
} 
関連する問題