在angular2中滚动顶部

Vin*_*Ram 15 javascript typescript angular2-routing angular

我正在开发angular2 web应用程序,我需要以下帮助.我的页面由多个组件组成.我想在用户点击按钮时滚动页面顶部.我试过 document.body.scrollTop = 0;但这不适用于Chrome.我试过document.documentElement.scrollTop = 0; window.scrollTo(0,0); 但没有工作

小智 19

像这样导入,

import { Inject} from "@angular/core";
import { DOCUMENT } from '@angular/platform-browser';
Run Code Online (Sandbox Code Playgroud)

在你的构造函数中添加这个,

constructor(@Inject(DOCUMENT) private document: Document) { }
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样设置滚动,

this.document.body.scrollTop = 0;
Run Code Online (Sandbox Code Playgroud)

  • 从@ angular/platform-b​​rowser导入似乎已被弃用,建议从@ angular/common导入.[链接](https://angular.io/api/platform-b​​rowser/DOCUMENT) (4认同)
  • 这似乎不起作用.没有错误,只是没有响应,使用Angular 4/CLI. (4认同)
  • 对我来说,它确实适用于 Angular 2(即使没有注入 DOCUMENT)。刚刚更新到 Angular 5.0.3 并尝试了上述解决方案,对我来说它不起作用。 (2认同)

Jan*_*anP 9

只需使用:

window.scroll(0, 0);
Run Code Online (Sandbox Code Playgroud)


小智 5

我使用数据绑定解决了角度滚动问题:

<div class="container" [scrollTop]="scrollTop"> ... </div>
Run Code Online (Sandbox Code Playgroud)

与样式:

.container {
  height: 100%;
  scroll: auto;
  position: relative;
}
Run Code Online (Sandbox Code Playgroud)


Vik*_*oka 5

我建议为此编写指令。确保将其导入到您正在使用的模块中。

import { Directive, HostListener } from '@angular/core';

@Directive({
  selector: '[scrollToTop]'
})
export class ScrollToTopDirective {
  @HostListener('click')
  public onClick() {
    if (window && window.pageYOffset) {
      window.scroll(0, 0);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

并像下面一样使用它

<button scrollToTop>Scroll to Top</button>
Run Code Online (Sandbox Code Playgroud)

还可以考虑根据 Angular 最佳实践将前缀添加到指令中。

https://angular.io/guide/styleguide#directive-custom-prefix