Angular 11 scroll to top on route change

By default Angular doesn't scroll to the top of the page when you're navigating to another page. Here is a quick tip how to implement scrolling.

Implement a scroll service

At first create a new service called ScrollTopService. On a server side [Angular Universal] we don't need this "hack" so it's limited only to a browser.

import { Injectable, Inject, PLATFORM_ID } from '@angular/core'; import { Router, NavigationEnd } from '@angular/router'; import { isPlatformBrowser } from '@angular/common'; @Injectable[] export class ScrollTopService { constructor[ @Inject[PLATFORM_ID] private platformId: Object, private router: Router ] {} setScrollTop[] { if [isPlatformBrowser[this.platformId]] { this.router.events.subscribe[[event: NavigationEnd] => { window.scroll[0, 0]; }]; } } }
Enter fullscreen mode Exit fullscreen mode

Inject service into a component

Import the service into the component.

import { ScrollTopService } from '../your/path/scrolltop.service';
Enter fullscreen mode Exit fullscreen mode

Then call the setScrollTop method on ngInit in your component to initialize scrolling.

ngOnInit[] { this.scrollTopService.setScrollTop[]; }
Enter fullscreen mode Exit fullscreen mode

Video liên quan

Chủ Đề