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

Ответы на вопрос(1)

Ваш ответ на вопрос