Я постараюсь упростить приложение для целей этого вопроса.Допустим, у нас есть две страницы:
- / home
- / edit
При переходе на страницу /edit
запрос beginEdit
сделано на заднем конце.При переходе от страницы /edit
(т. Е. К /home
) запрос endEdit
выполняется на серверную часть.У меня есть canDeactivate
охранник, который ловит навигацию и запрашивает пользователя, хочет ли он / она установить для параметра значение true или false (параметр в данном примере не имеет значения).Проблема заключается в том, что когда я имитирую медленную скорость сети и перехожу на /home
(или просто жму назад), а затем быстро нажимаю браузер вперед, запрос прошел, но компонент не был уничтожен.Поэтому все, что я делаю на странице, больше не действует.Я не могу переместить запрос на ngOnDestroy()
, потому что я должен быть уверен, что запрос прошел.
Есть ли хороший способ решения этой проблемы?
РЕДАКТИРОВАТЬ: Я добавил образец .
- Перейти к первому компоненту (ссылка)
- Нажмите кнопку
Component Two
- Нажмите кнопку
Component One
- Я добавил несколько задержек ... спам в браузере, пока он не станет активным
- Проверка консоли по пути
После вызова endEdit
APIна странице Component Two
она всегда должна уничтожать компонент.