导航到新路线时的滚动问题

时间:2018-08-02 10:14:43

标签: angular scroll angular-router

当我从现有路线导航到新路线时,新页面不会在顶部打开。

我已经尝试了很多选择。 这是我找到的解决方案之一,但对我没有用。

export class AppComponent implements OnInit { 

    constructor(private router: Router, private changeDetect: ChangeDetectorRef) {
      }

      ngOnInit() {
        this.router.events.subscribe((evt) => {
          if (!(evt instanceof NavigationEnd)) {
            return;
          }
          console.log(evt)
          window.scrollTo(0, 0);
          this.changeDetect.detectChanges();
        });
      }
    }

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您可以使用App.component.ts中的这一选项来修复它:

router.events.pairwise().subscribe((event: [NavigationEnd, NavigationEnd]) => {
      if (event[0] instanceof NavigationEnd) {
          window.scroll(0, 0);
      }
});

选项2:

Angular 6.1支持

RouterModule.forRoot(routes, {scrollPositionRestoration: 'enabled'})

答案 1 :(得分:0)

我尝试了对我有用的其他解决方案

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();
    });

  }
}