Angular2: Como impedir / anular a manipulação do histórico ao implementar o routerCanDeactivate?
routerCanDeactivate()
impede com sucesso a navegação para longe do componente.
routerCanDeactivate(nextInstruction: ComponentInstruction, prevInstruction: ComponentInstruction)
{
return confirm("Do you want to discard unsaved changes ?");
}
Mas se a navegação for causada pelo navegadorback
botão ou qualquer outrohistory.back()
desencadear,
então ele não mantém a história intacta e disparapopState
em cada gatilho e, eventualmente, navega para a página inicial do navegador (testada no Chrome).
EDITAR:
Salvei o URL do componente atual em uma variávelcurrentLocation
e
tentou manipularhistory
comhistory api
mas
simplesmente não conseguia descobrir a ordem correta das chamadas da API necessárias para mantê-la intacta.
routerCanDeactivate(nextInstruction: ComponentInstruction, prevInstruction: ComponentInstruction) {
history.replaceState(null,null, this.currentLocation);
history.forward();
return confirm("Do you want to discard unsaved changes ?");
}