Angular2: ¿Cómo prevenir / anular la manipulación del historial al implementar routerCanDeactivate?
routerCanDeactivate()
evita con éxito la navegación fuera del componente.
routerCanDeactivate(nextInstruction: ComponentInstruction, prevInstruction: ComponentInstruction)
{
return confirm("Do you want to discard unsaved changes ?");
}
Pero si la navegación es causada por el navegadorback
botón o cualquier otrohistory.back()
desencadenar,
entonces no mantiene el historial intacto y desencadenapopState
en cada disparador y eventualmente navega a la página de inicio del navegador (probado en Chrome).
EDITAR:
Guarde la URL del componente actual en una variablecurrentLocation
y
trató de manipularhistory
conhistory api
pero
simplemente no podía entender el orden correcto de llamadas de API requeridas para mantenerlo intacto.
routerCanDeactivate(nextInstruction: ComponentInstruction, prevInstruction: ComponentInstruction) {
history.replaceState(null,null, this.currentLocation);
history.forward();
return confirm("Do you want to discard unsaved changes ?");
}