Angular 7 отключить прокрутку вверх на Sub Sub Route Change - PullRequest
0 голосов
/ 10 июля 2019

У меня есть 2 варианта прокрутки вверх страницы. Во-первых,

router.events.subscribe((evt) => {
    if (evt instanceof NavigationEnd) {
        window.scroll({
            top: 0,
            left: 0,
            behavior: 'smooth'
        });
    }
});

и второй вариант доступен из Angular 6 is,

RouterModule.forRoot(AppRoutes, { 
      scrollPositionRestoration: "enabled"
})

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

Так что мне нужно отключить функцию прокрутки до верха на дополнительном маршруте. Есть ли способ сделать это?

Любая помощь / идея приветствуется.

1 Ответ

0 голосов
/ 10 июля 2019

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

//for scalability, define routes you don't want to scroll to top in a string array

const noScrollRoutes: string[] = ['route/tabSubRoute1', 'route/tabSubRoute2'];

router.events.subscribe((evt) => {
    if (evt instanceof NavigationEnd) {
        if(noScrollRoutes.find(this.router.url) == undefined){ //if can't a route in predefined array, scroll to top
           window.scroll({
               top: 0,
               left: 0,
               behavior: 'smooth'
           });
        }
    }
});

Кроме того, вам, вероятно, нужно удалить scrollPositionRestoration: "enabled", оставьте его отключенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...