Angular2 + |Удалить историю пересылки после просмотра назад - PullRequest
0 голосов
/ 23 ноября 2018

Чтобы иметь возможность закрыть мой (динамически добавленный) модал с помощью кнопки назад браузера, я добавляю хеш #modal к моему URL, как только открывается модал.После нажатия кнопки возврата в браузере я слушаю всплывающее состояние, проверяю, открыт ли модал, и удаляю его.Когда модальное окно закрывается без использования кнопки назад браузера, я выполняю history.back () и удаляю модальное окно.Побочным эффектом является то, что в истории остался прямой путь, который является хешем #modal.

Есть ли способ избавиться от этой прямой истории?


Iпосле перехода назад попытался перейти по тому же URL-адресу, но это, похоже, ничего не дает.Я также использую queryParams в своем приложении, но я не думаю, что это влияет на что-либо здесь.

При открытии модального режима, я добавляю #modal:

this.router.navigate([], {fragment: 'modal', queryParamsHandling: 'merge'})

В состоянии pop:

location.onPopState( () => {
  if(this.modalCount > 0){
    this.removeAllModals();
    const routerSub = this.router.events.subscribe(event => {
      if(event instanceof NavigationEnd) {
        this.router.navigate([], {replaceUrl:true, queryParamsHandling: 'merge';
        routerSub.unsubscribe();
      }
    })
  }
})

1 Ответ

0 голосов
/ 23 ноября 2018

Использование

navigateByUrl ()

Перемещение по предоставленному URL.Эта навигация всегда абсолютна.

Она заменит весь URL-адрес указанным путем

location.onPopState( () => {
  if(this.modalCount > 0){
    this.removeAllModals();
    this.router.events.subscribe(event => {
      if(event instanceof NavigationEnd) {
        this.router.navigateByUrl('');         
      }
    })
  }
})
...