2017-08-17 18 views
2

ボタン(ページの一番下にある)をクリックすると、上部にある特定の要素(私の場合は#navbar)に移動したい現在のページが、私はそれを行う方法がわかりません。私は役に立たないと次のコードを試してみました。角度成分で現在のページの特定の要素にスクロールする4

<nav class="navbar navbar-light bg-faded" id="navbar"> 
    <a class="navbar-brand" href="#"> 
     {{appTitle}} 
    </a> 
    <!-- rest of the nav link --> 
</nav> 
<!-- rest of the page content --> 

<!-- bottom of the page --> 
<button class="btn btn-outline-secondary" (click)="gotoTop()">Top</button> 

import { Router } from '@angular/router'; 
/* rest of the import statements */ 
export class MyComponent { 
    /* rest of the component code */ 
    gotoTop(){ 
     this.router.navigate([], { fragment: 'navbar' }); 
    } 
} 

誰かが解決策で私を助け、私のコードが働いていなかった理由を説明した場合、私は本当にいただければ幸いです。

要素(navbar)は他のコンポーネントにあることに注意してください。

+0

それは私の目的に役立たないでしょう。私はクリックイベントを使用したい。また、厳密に角度をつけて行うことでそれをやりたい – asmmahmud

+0

AngularがコンベンションHTMLを奪うとき以来、それは意味がありませんが、あなたの選択を尊重してください – Vega

答えて

3

あなたはjavascriptでこれを行うことができます。

gotoTop() { 
    let el = document.getElementById('navbar'); 
    el.scrollTop = el.scrollHeight; 
} 

メソッドが呼び出されたときには、ビューにid="navbar"でDOM要素をもたらすでしょう。 Element.scrollIntoViewを使用するオプションもあります。これは滑らかなアニメーションを提供し、見栄えは良いですが、古いブラウザではサポートされていません。

要素が異なるコンポーネントにある場合は、this questionのようにいくつかの異なる方法で参照できます。

あなたのケースのための最も簡単な方法は、おそらく次のようになります。

import { ElementRef } from '@angular/core'; // at the top of component.ts 

constructor(myElement: ElementRef) { ... } // in your export class MyComponent block 

し、最終的に

gotoTop() { 
    let el = this.myElement.nativeElement.querySelector('nav'); 
    el.scrollIntoView(); 
} 

Working plunker.

+0

それは動作していないようです。要素は他の要素にあることに注意してください。 – asmmahmud

+0

https://angular.io/api/core/ElementRefを含むように更新されました –

+0

まだ動作しません。 – asmmahmud

0

私はあなたの方法があるため、空のルータで動作しませんでしたと思います。

this.router.navigate(['/home'], { fragment: 'top' }); 

'home'がルートとして宣言されていて、その上にid = "top"要素があると、機能します。私は(少なくとも)あなたは、それは「純粋な角度道」になりたいが、これは動作するはずです知っている

gotoTop(){ 
    location.hash = "#navbar"; 
} 
0

私が知っている、あなたは、ページ内の特定の要素にスクロールします。要素がページの上部にある場合は、次のように使用できます。

window.scrollTo(0, 0); 
関連する問題