уведомление о каждом изменении URL - PullRequest
0 голосов
/ 16 января 2020

Можно ли получить (событие) уведомление о каждом изменении URL (без перезагрузки страницы, как мы можем сделать с использованием location.replaceState())?

Точнее: я не меняю компонент или страницу , Я просто поменяю URL на будущее.

UPADATE Не элегантное решение: ручной запуск

var popStateEvent = new PopStateEvent('popstate', { state: state });
dispatchEvent(popStateEvent);

1 Ответ

1 голос
/ 16 января 2020

Возможно, вам потребуется создать службу, доступную для root, и добавить для нее тему, которая будет вызываться в каждом onDestroy для каждого компонента.

в службе:

//imports here
export class TestService {
   pageChange$ = new Subject();
}

во всех компонентах, где вы хотите инициировать изменение:

//imports
export class TestComponent implements OnDestroy {
//component properties
  constructor(private testSrv: TestService){}
  ngOnDestroy(){
    let notification = 'This page is getting closed';
    testSrv.pageChange$.next(notification);
  }
}

в компоненте, где вы хотите получить изменение:

//imports
export class HeaderComponent implements OnInit {
//component properties
  constructor(private testSrv: TestService){}
  ngOnInit(){
    let notification = 'This page is getting closed';
    testSrv.pageChange$.subscribe(notification => {
       console.log(notification);
     });
  }
}

Это общее представление о том, что вы можете сделать чтобы решить вашу проблему.

Обновление

Если вы хотите просто отслеживать изменения URL, вам нужно использовать Router:

constructor(private router: Router) {}

ngOnInit(){
   this.router.events.subscribe((val) => {
        if(this.router.navigated){
           //do something here
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...