35744


Angular（v4.0.0）でページ遷移する際に、遷移前のページのスクロール位置が遷移後のページに保持されたまま遷移してしまいます。  
遷移方法は以下のようにrouterLinkを用いています。

[code]

    <a routerLink="/page2"></a>
    <router-outlet></router-outlet>
    
[/code]

これは、Angular（v4.0.0）の仕様なのでしょうか？  
また、仕様であれば、この機能をoffにすることはできるのでしょうか？

ご存知のかたは、教えていただけると幸いです。  
よろしくお願いいたします。


CC BY-SA 3.0
2017-06-19T23:07:29.570
35728
2017-06-20T08:44:22.507
23904
question
javascript node.js angular2 angular4
Angular(v4.0.0)でページ遷移する際、スクロール位置が保持される。


現時点では「仕様」のようで、  
Angularとしての機能としてOffにするような方法はないように思えます。

以下Angular Issueでも議論されておりますが、設定的な方法ではなく、処理を入れてしまう対処案しか出ていません。  
[Changing route doesn't scroll to top in the new page
#7791](https://github.com/angular/angular/issues/7791)

とりあえずは私も上記ページにある内のひとつの方法である  
以下をngOnInitに入れることによって対処しています(↑のIssue#7791内のtrickでは突入された側のRouterではなく去り側のRouterでsetしています。)

[code]

    this.renderer.setElementProperty(document.body, "scrollTop", 0);
    
[/code]

私見入りますが、あまり良い「仕様」とは言えないのでAngularTeamにconfig方法をRequestしたいところです。(とりあえず上記#7791にVoteしました。)


CC BY-SA 3.0
2017-06-20T08:44:22.507
35744
2017-06-20T08:44:22.507
19716
35728
answer