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