Angular2: Как предотвратить / аннулировать манипулирование историей при реализации routerCanDeactivate?
routerCanDeactivate()
успешно предотвращает переход от компонента.
routerCanDeactivate(nextInstruction: ComponentInstruction, prevInstruction: ComponentInstruction)
{
return confirm("Do you want to discard unsaved changes ?");
}
Но если навигация вызвана браузеромback
кнопка или любой другойhistory.back()
спусковой крючок,
тогда это не сохраняет историю нетронутой и вызываетpopState
на каждом триггере и в конечном итоге переходит на домашнюю страницу браузера (проверено на Chrome).
РЕДАКТИРОВАТЬ:
Я сохранил URL текущего компонента в переменнойcurrentLocation
а также
пытался манипулироватьhistory
сhistory api
но
просто не мог понять правильный порядок вызовов API, необходимых, чтобы сохранить его нетронутым.
routerCanDeactivate(nextInstruction: ComponentInstruction, prevInstruction: ComponentInstruction) {
history.replaceState(null,null, this.currentLocation);
history.forward();
return confirm("Do you want to discard unsaved changes ?");
}