[解決済み】Angular 5 Routeクリック毎にトップにスクロールする。
2022-02-08 23:25:28
質問
私はangular 5を使用しています。ダッシュボードに小さなコンテンツのセクションと大きなコンテンツのセクションがあり、ルーターを変更する際に問題が発生しました。私はトップに移動するためにスクロールする必要がありますたびに。私はルータを変更したときに私のビューは常に一番上に滞在するように、誰もがこの問題を解決するために私を助けることができる。
よろしくお願いします。
どのように解決するのですか?
いくつかの解決策がありますので、すべて確認してください :)
ルーターコンセントが発する
activate
イベントは、新しいコンポーネントがインスタンス化されるたびに発生します。
(activate)
を使えば、(例えば)一番上までスクロールすることができます。
app.component.html
<router-outlet (activate)="onActivate($event)" ></router-outlet>
app.component.ts
onActivate(event) {
window.scroll(0,0);
//or document.body.scrollTop = 0;
//or document.querySelector('body').scrollTo(0,0)
...
}
例えば、以下のように使用します。 この解決策 を使用すると、スムーズにスクロールすることができます。
onActivate(event) {
let scrollToTop = window.setInterval(() => {
let pos = window.pageYOffset;
if (pos > 0) {
window.scrollTo(0, pos - 20); // how far to scroll on each step
} else {
window.clearInterval(scrollToTop);
}
}, 16);
}
すべてのコンポーネントがスクロールを開始するわけではない、というように選択的でありたい場合、そのチェックは
if
のように記述します。
onActivate(e) {
if (e.constructor.name)==="login"{ // for example
window.scroll(0,0);
}
}
Angular6.1以降では、この他に
{ scrollPositionRestoration: 'enabled' }
を実行すると、すべてのルートに適用されます。
RouterModule.forRoot(appRoutes, { scrollPositionRestoration: 'enabled' })
スムーススクロールもやってくれるよ、もう。しかし、これはすべてのルーティングでそれを行うための不便さを持っています。
他の解決策としては、ルーターアニメーションでトップスクロールを行うことです。これは、上部にスクロールさせたいすべてのトランジションに追加します。
query(':enter, :leave', style({ position: 'fixed' }), { optional: true })
関連
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み】未定義のプロパティ 'bind' を読み込めない。React.js【重複あり
-
[解決済み] 要素外でのクリックを検出するにはどうすればよいですか?
-
[解決済み] jQueryで要素にスクロールする
-
[解決済み] JavaScriptでページの一番上までスクロールする?
-
[解決済み] angular-routeとangular-ui-routerの違いは何ですか?
-
[解決済み] Angular HTMLバインディング
-
[解決済み] Angularプロジェクトごとに生成される膨大な数のファイル
-
[解決済み】Angular 2 ルート変更時に上部にスクロールさせる
-
[解決済み】Angularでルート変更を検出する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】SyntaxError: 'import' と 'export' は 'sourceType: module' とだけ表示されるかもしれない - Gulp
-
[解決済み】未定義のプロパティ 'bind' を読み込めない。React.js【重複あり
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】JavaScriptで相対URLへのリダイレクトを行う
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】 Uncaught Reference Error: stLight is not defined (in Chrome only)
-
[解決済み】HTMLの最初の行に予期しないトークン<がある。
-
[解決済み] JavaScriptでページの一番上までスクロールする?
-
[解決済み】Angular 2 ルート変更時に上部にスクロールさせる