我想在用戶關閉窗口之前保存更改,但在退出選項卡時它不起作用。 我正在使用路由器的canDeactivate方法,它在我用F5刷新頁面時起作用,但是當我關閉標籤數據時並未保存。這裏是我的組件我canDeactivate功能:Angular 2在用戶關閉窗口之前調用http
@HostListener('window:beforeunload')
canDeactivate(): Observable<boolean> | boolean {
let subject = new Subject<boolean>();
let observable = subject.asObservable();
this.service.save(this.data).then(() => {
subject.next(true);
});
return observable.first();
}
我已經嘗試過這也:
@HostListener('window:beforeunload')
canDeactivate(): Observable<boolean> | boolean {
let xmlhttp = new XMLHttpRequest(); // new HttpRequest instance
xmlhttp.withCredentials = false;
xmlhttp.open("PUT", "http://localhost:8080/rest/api");
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.setRequestHeader("Accept", "application/json");
xmlhttp.send(this.data);
return false;
}
該解決方案讓他想退出與否,我不想讓他取消我的HTTP調用 –
有沒有選項關閉之前發送一個異步HTTP調用到服務器,並等待它的用戶決定窗戶。您只能通知用戶他有未保存的更改。 – cyrix
@MattewEon我不太確定如果這是可能的這是一個瀏覽器的限制,但我搜索所以你可以檢查這個[鏈接](https://stackoverflow.com/questions/38999842/angular-2-execute-code-when -closing-window)。不太確定這是否有助於解決問題 –