在Angular 2/4中刷新之前执行功能

MeV*_*mar 6 typescript angular

HTML页面上,当用户点击/按下F5按钮页面刷新但在刷新之前我想执行一个功能或一个简单的警报.

用户可以点击刷新按钮,按F5Ctrl + R.

使用Angular2/4

Con*_*Fan 8

刷新页面应该触发绑定的事件处理程序window:beforeunload.这个stackblitz展示了如何使用"Home"组件实现它HostListener.您可以通过在整页模式下执行页面刷新来测试页面刷新.

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

@Component({
    ...
})
export class HomeViewComponent {

  @HostListener("window:beforeunload", ["$event"]) unloadHandler(event: Event) {
      console.log("Processing beforeunload...");
      // Do more processing...
      event.returnValue = false;
  }

  ...
}
Run Code Online (Sandbox Code Playgroud)

  • +1。这正是使用 Angular2+ 的人需要捕捉浏览器选项卡刷新/关闭并在此之前做一些事情。如果你不想得到确认离开确认对话框,什么都不做(不要分配 returnValue)。 (3认同)

cod*_*ter 2

这里需要依赖浏览器事件。

window.onbeforeunload = (ev) => {
            this.myFunction();

            // OR

            this.yuorService.doActon().subscribe(() => {
                alert('did something before refresh');  
            });

             // OR

            alert('goin to refresh');

            // finally return the message to browser api.
            var dialogText = 'Changes that you made may not be saved.';
            ev.returnValue = dialogText;
            return dialogText;
    }; 
Run Code Online (Sandbox Code Playgroud)