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 ?");
  }

questionAnswers(1)

yourAnswerToTheQuestion