Угловая нежелательная прокрутка вверх на определенных вкладках - PullRequest
0 голосов
/ 14 марта 2019

У меня есть одностраничное приложение, написанное на Angular 6. Существует требование, чтобы каждая вкладка страницы загружалась сверху, поэтому я реализовал функцию в своем основном навигационном компоненте (который используется во всем приложении ) точно так же, как здесь: Angular 2 Прокрутите вверх, чтобы изменить маршрут , ответ @Fernando Echeverria.

Пример кода:

ngOnInit(): void {
this.location.subscribe((ev:PopStateEvent) => {
  this.lastPoppedUrl = ev.url;
})
this.router.events.subscribe((ev) => {
  if (ev instanceof NavigationStart) {
    if (ev.url != this.lastPoppedUrl)
        this.yScrollStack.push(window.scrollY);
  } else if (ev instanceof NavigationEnd) {
      if (ev.url == this.lastPoppedUrl) {
        this.lastPoppedUrl = undefined;
        window.scrollTo(0, this.yScrollStack.pop());
      } else
          window.scrollTo(0, 0);
    }
});

Проблема в том, что если я хочу получить доступ к внутренней привязке на какой-либо странице типа текстовой стены, она перемещается туда и мгновенно прокручивается вверху, например:

      <li>
        <a href="/text-wall#some-place-A">Navigate to A</a>
      </li>
//list of other navigation references
...
<a id="some-place-1" class="anchor">A</a>
//Some text
...
//Another anchor with some text following

Кто-нибудь еще сталкивался с этой проблемой? Удаление прокрутки приведет к тому, что люди не будут загружать вкладку вверху.

...