Angular 4中的帖子请求不能使用@HostListener

时间:2018-03-29 08:37:17

标签: angular browser

主持人监听器不起作用。 正在调用触发请求的函数,但不会调用后操作。 任何人都可以帮忙吗?

app.component.ts

Auto DevOps (Beta)

2 个答案:

答案 0 :(得分:0)

我认为您无法在POST中异步beforeunload,因为该功能将终止,用户将在您的订阅结算之前离开该页面。

你可以自己做一个synchronous(阻止)电话,但Angular不支持(因为这是一个坏主意),所以你必须采用老式的方式。

答案 1 :(得分:0)

在我更改了unlockAlias()以返回http结果(这是一个可观察到的结果)并将其订阅到(“ window:beforeunload”)事件之后,它起作用了。

@HostListener('window:beforeunload', ['$event'])
onWindowClose($event) {
    this.unlockAlias().subscribe();

 unlockAlias() {
    const apiEndPoint = environment.baseUrl + environment.unLockAlais;
    const body = '{"uid": "' + this.service.userInfo.username + '" }';
    const headers = new Headers({ 'Content-Type': 'application/json' });
    headers.append('Access-Control-Allow-Origin', '*');
    const options = new RequestOptions({ headers: headers });
    return this.http.post(apiEndPoint, body, options);
}