Angular 8 scroll to top on route change

Angular 2 scroll to top on route change not working

The router will emit an event when a new component gets loaded in the so you can attach an event to it.

So in your component with use:

and then in the same component where you placed add the following method:

scrollTop(event) { window.scroll(0,0); }

Wait for the component to initialized component before you start scrolling. So better to put this code under ngAfterViewInit function.

ngAfterViewInit() { this.router.events.subscribe((evt) => { if (!(evt instanceof NavigationEnd)) { return; } window.scrollTo(0, 0) }); }

This similar issue was faced by me which was due to the style applied to body. i.e.

body { height: 100%; overflow-x: hidden; }

If I removed this style then my layout was badly affected.

Instead of removing style I tried below solution and it worked for me...

Solution:

export class AppComponent implements OnInit { constructor(private router: Router, private changeDetect: ChangeDetectorRef) { } ngOnInit() { this.router.events.subscribe((evt) => { if (!(evt instanceof NavigationEnd)) { return; } // Change height:100% into auto $('body').css('height', 'auto'); // Successfully scroll back to top $('body').scrollTop(0); // Remove javascript added styles $('body').css('height', ''); this.changeDetect.detectChanges(); }); } }