1

我有一個側面導航,它有側面菜單。當我點擊菜單中的某些東西時,相應的細節會顯示在右側。保留固定左側菜單的點擊狀態

該菜單有子菜單,所以當我點擊菜單子菜單也是可見的。

現在,當我重新加載頁面,我能夠保留右側的細節,但子菜單是隱藏的。我怎樣才能保持這一點。

HTML

<nav class="sidebar"> 
    <ul class="list-group" *ngFor="let tenant of tenants ;trackBy: trackId"> 
     <div class="nested-menu"> 
      <a [routerLink]="['../tenant', tenant.id ]" class="list-group-item" (click)="addExpandClass(tenant.id)"> 
       <span><i class="fa fa-th-list"></i> &nbsp; {{tenant.name}}</span> 
      </a> 
      <li class="nested" [ngClass]="{'expand' : showMenu === tenant.id }"> 
       <ul class="submenu" *ngFor="let dataConfiguration of tenant.dataConfigurations ;trackBy: trackId"> 
        <li> 
         <a href><span>{{dataConfiguration.name}}</span></a> 
        </li> 
       </ul> 
      </li> 
     </div>  
    </ul> 
</nav> 

側菜單JS

import { Component, Input } from '@angular/core'; 

@Component({ 
    selector: 'sidebar-cmp', 
    templateUrl: 'sidebar.html', 
    styleUrls: [ 
     'sidebar.scss' 
    ] 
}) 

export class SidebarComponent { 
    @Input() tenants = 0; 
    showMenu: string = ''; 

    addExpandClass(element: any) { 
     if (element === this.showMenu) { 
      this.showMenu = '0'; 
     } else { 
      this.showMenu = element; 
     } 
    } 
} 

父HTML

<div class="container-fluid"> 
    <div class="row"> 
    <div class="col-md-2"> 
     <sidebar-cmp [tenants] = "tenants"></sidebar-cmp> 
    </div> 
    <div class="col-md-10"> 
     <router-outlet></router-outlet> 
    </div> 
    </div> 
</div> 

enter image description here

+0

您想要在重新加載頁面時顯示子菜單嗎? –

+0

@Kinduser:是的 –

回答

0

嘗試使用routerLinkActive directive,如果日Ë相關鏈接獲取特定類,您可以瞄準一切使用類(甚至是類應用到子菜單等)

0

使用下面的HTML

<div> 
<div class="row"> 
    <div class="col-md-3"> 
     <nav class="sidebar"> 
      <ul class="list-group" *ngFor="let tenant of tenants ;trackBy: trackId"> 
       <div class="nested-menu"> 
        <a [routerLink]="['../tenant', tenant.id ]" class="list-group-item" (click)="addExpandClass(tenant.id)"> 
         <span><i class="fa fa-th-list"></i> &nbsp; {{tenant.name}}</span> 
        </a> 
        <li class="nested" [ngClass]="{'expand' : showMenu === tenant.id }"> 
         <ul class="submenu" *ngFor="let dataConfiguration of tenant.dataConfigurations ;trackBy: trackId"> 
          <li> 
           <a [routerLink]="['...']"><span>{{dataConfiguration.name}}</span></a> 
          </li> 
         </ul> 
        </li> 
       </div>  
      </ul> 
     </nav> 
    </div> 
    <div class="col-md-9"> 
     <router-outlet> </router-outlet> 
    </div> 
</div> 

定義你的路徑在appmodule.ts文件中。

根據以下您的評論,在頁面刷新期間不能處理菜單之間的切換。您可以讓tenatnts中的相應菜單的屬性保留該狀態。但是,在頁面刷新之後,組件像以前一樣新加載。所以你的數據將會丟失。

只有在您使用狀態保持機制時纔可能發生這種情況,這對於菜單點擊擴展而言是一種開銷。

+0

我需要觸發這個頁面加載我認爲(點擊)=「addExpandClass(tenant.id)」 –

+0

現在什麼是你得到的輸出? – Aravind

+0

所以你提到我已經有這個。我更新以使其更清楚。所以問題不在右邊。問題出在左側的子菜單上。當我重新加載時,如果以前它們處於展開狀態,它們不會展開。如果我不重新加載頁面比一切都很好,工作。 –