2017-05-04 31 views
2

我正在創建一個使用Angular 2和Bootstrap 4的單頁網站。如何在使用頁面錨定導航時將「激活」類設置爲在Angular 2中引導導航欄?

我創建了一個始終在頁面頂部的導航欄組件,並且我使用了頁面錨定導航(#id)。請注意,我還沒有創建路由模塊(到目前爲止,沒有必要這樣做)。

導航欄代碼如下:

<nav class="navbar navbar-default fixed-top navbar-inverse navbar-toggleable-md"> 
    <div class="container"> 

    <div class="navbar-header"> 
     <button class="navbar-toggler navbar-toggler-right btn btn-outline-secondary" (click)="isCollapsed = !isCollapsed" [attr.aria-expanded]="!isCollapsed" aria-controls="collapseExample"> 
     <i class="fa fa-bars" aria-hidden="true"></i> 
     </button> 
     <a class="navbar-brand" href="index.html">Garatéa</a> 
    </div> 

    <div id="collapseExample" class="navbar-collapse collapse" [ngbCollapse]="isCollapsed"> 
     <ul class="nav navbar-nav ml-auto"> 
     <li class="nav-item"><a class="nav-link" href="#home">Início</a></li> 
     <li class="nav-item"><a class="nav-link" href="#about">Sobre</a></li> 
     <li class="nav-item"><a class="nav-link" href="#team">Quem Somos</a></li> 
     <li class="nav-item"><a class="nav-link" href="#contact">Contato</a></li> 
     </ul> 
    </div> 
    </div> 
</nav> 

每個鏈接對應的單頁的網站的一部分,例如,家裏組件模板是:

<div id="home" class="text-center home-background"> 
    <div class="overlay"> 
    <div class="content"> 
     <h1>Bem vindo à <strong><span class="title-text">Garatéa</span></strong></h1> 
     <p class="lead">Somos uma inciativa que <strong>aumenta a taxa de sobrevivência</strong> em emergências médicas.</p> 
    </div> 
    </div> 
</div> 

我的問題是:如何我可以突出顯示導航欄中與我目前瀏覽的網站部分相對應的鏈接嗎?例如,如果我正在查看關於該部分的團隊,我希望導航欄上有一個active CSS類:<li class="nav-item active"><a class="nav-link" href="#about">Sobre</a></li>

回答

1

您可以使用srcElement上<a>標籤點擊如下

<a class="nav-link" (click)="clickedLink($event)">Início</a> 
<a class="nav-link" (click)="clickedLink($event)">Início</a> 
<a class="nav-link" (click)="clickedLink($event)">Início</a> 

方法將被作爲

clickedLink(e){ 
let element = e.srcElement; 

console.log(e) 
for(let i =0; i <element.parentElement.children.length ; i++){ 
    if(element.parentElement.children[i].classList.contains('active')){ 
    element.parentElement.children[i].classList.remove('active') 
    } 
} 
element.classList.add('active'); 

}

LIVE DEMO

+0

嗨@Aravind,感謝你的偉大答案!然而,我想要做的另一件事是將活動類設置爲鏈接,不僅在我點擊它們時,而且在滾動我的頁面時。例如,無論何時點擊它,或者如果我向下滾動到About組件,about鏈接(Sobre)都應該處於活動狀態。你對滾動部分有什麼建議嗎? – Felipe

+0

我沒有得到你的觀點,你可以詳細說明嗎?如果這個答案有助於標記並且贊成 – Aravind

+0

好吧,因爲我的網站是一個單頁面應用程序,所以用戶可以通過向下滾動或點擊上面的鏈接來訪問它的每個部分(每個鏈接都會將用戶帶到網站,所有部分都在同一頁)。我想突出顯示導航欄上正確的部分鏈接,無論用戶是點擊鏈接還是隻是向下滾動。 – Felipe