Событие unload может завершиться и закрыть окно перед выполнением вызова.
См. Эту статью, чтобы выполнить асинхронные c вызовы в ngOnDestroy и убедиться, что ngOnDestroy вызывается при событиях закрытия окна (особенно горячий совет № 1). и # 2 разделы).
В нем подробно описывается, как завершить вызов службы для события разгрузки окна. Wesley Grimes Angular ngOnDestroy
Вот как я использую его в app.component, который добавляет запись в базу данных при закрытии окна браузера:
Примечание. Некоторые операции импорта могут быть неактуальны, просто скопируйте код из моего приложения как есть.
app.component.ts:
import { Component, OnInit, ViewChild, ElementRef, Renderer2, Input, Output, EventEmitter, HostListener, OnDestroy } from '@angular/core';
...
export class AppComponent implements OnInit, OnDestroy {
...
@HostListener('window:beforeunload')
async ngOnDestroy()
{
await this.myService.AddItem().subscribe();
}
my-service.ts:
AddItem(): Observable<any>
{
return this.http.get<any>(environment.apiURL + 'items/AddItem', httpOptions);
}