2017-10-18 17 views
0

ハンバーガーメニューを作成しましたが、サブカテゴリーを表示するトグル機能があります。このトグル機能はフィルターを適用するまで機能しています。フィルタトグル機能を使用してカテゴリを検索した後、機能しません。角度2のフィルターとトグル機能が期待通りに機能しない

これはcomponent.tsで

<ul class="nav navbar-nav"> 
<div id="menuToggle" class="sidenav"> 
<ul id="menu"> 
    <li> 
    <input class="form-control" type="search" [(ngModel)]="txtToSearch" placeholder="Search"/> 
    </li> 
    <li *ngFor="let category of (componentContents.dashboardMenu | dashboardFilter : txtToSearch); let i = index" > 
    <p class="toggleMenu" (click)="toggleMenu(i,componentContents.dashboardMenu)">{{category.category}} 
    </p> 

    <div *ngIf="category.show"> 
     <ul id="{{(category.category).split(' ').join('-')}}" *ngIf="category.subCategory.length > 0"> 
     <li *ngFor="let subCat of category.subCategory"> 
      <a routerLink={{subCat.router}} routerLinkActive="active">    
      <span class="glyphicon glyphicon-bell" ></span>{{subCat.subcategory}} </a></li> 
     </ul> 
    </div> 
    <hr /> 
    </li> 
</ul> 

はトグル機能

toggleMenu(index, catArry) { 
if (catArry[this.prevClicked] && this.prevClicked !== index) { 
    catArry[this.prevClicked].show = false; 
} 
catArry[index].show = !catArry[index].show; 
this.prevClicked = index; 
} 
+0

屈折率変化を利用してtoggleMenu機能で指数を計算することができます – learner

答えて

2

index変数は、現在の結果に適用されるため、このコードを使用してイム私のhtmlコードです。したがって、フィルタが適用されると、結果は変化し、インデックスは配列内の要素の実際の位置に対応しません。

あなたが代わりにインデックスのtoggleMenu(category, catArray)関数にカテゴリ自体を渡すと、フィルタが適用され、インデックスがモデルコレクションと一致していない私が推測されたときにビューのcatArray.indexOf(category)

+0

おかげさまでしたが、エラーが発生しました。プロパティが定義されていません。 – user1881845

+0

ここにあなたの更新コードを貼り付けたり、そこからプランナーを作成したりできますか? – learner

+0

toggleMenu(カテゴリ、catArry){ let index = catArry.indexOf(category); console.log( "Index Value" + index); if(catArry [this.prevClicked] && this.prevClicked!== index){ catArry [this.prevClicked] .show = false; } catArry [index] .show =!catArry [index] .show; this.prevClicked = index; } – user1881845

関連する問題