我试图调用在卸载组件之前创建的post方法,但是它不起作用。

我在@HostListener上设置了一个断点,当我打开其他组件时它并没有在此断点。

我正在使用Chrome进行调试,并打开了事件监听器断点进行卸载和beforeunload,当我打开其他组件时,断点确实会中断。

angular - 如何使用@HostListener ('window:beforeunload')调用方法?-LMLPHP

我在代码中缺少什么吗?

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

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

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

最佳答案

window:beforeunload是一个浏览器事件,在实际卸载页面之前立即触发。

当您导航到另一个组件时,您实际上并没有卸载该页面。

您需要做的是使用ngOnDestroy,该组件在销毁组件时将被调用。实现以下接口(interface):

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

例子:

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

关于angular - 如何使用@HostListener ('window:beforeunload')调用方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46848628/

10-10 16:45