Javascript 角度2过滤器和切换功能未按预期工作

Javascript 角度2过滤器和切换功能未按预期工作,javascript,html,css,angular,Javascript,Html,Css,Angular,我已经创建了一个汉堡包菜单,有一个显示子类别的切换功能。这个切换功能工作正常,直到我对它们应用过滤器为止。通过过滤器搜索类别后,切换功能不起作用 这是我的html代码 <ul class="nav navbar-nav"> <div id="menuToggle" class="sidenav"> <ul id="menu"> <li> <input class="form-control" type="search" [(ngMo

我已经创建了一个汉堡包菜单,有一个显示子类别的切换功能。这个切换功能工作正常,直到我对它们应用过滤器为止。通过过滤器搜索类别后,切换功能不起作用

这是我的html代码

<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(category,catArray)
函数而不是index,并使用
catArray在
toggleMenu
函数中计算索引。index(category)
index变量仅适用于当前结果。因此,当应用过滤器时,结果会发生变化,索引与数组中元素的实际位置不对应


您可以将类别本身传递给
toggleMenu(category,catArray)
函数而不是index,并使用
catArray.indexOf(category)计算
toggleMenu
函数中的索引

当应用筛选器时,视图中的索引会更改,并且索引与模型集合不匹配我猜当应用筛选器时,视图中的索引会更改,并且索引与模型集合不匹配我猜谢谢我尝试了,但出现错误无法读取未定义的属性显示请将更新的代码粘贴到此处或者从中创建一个plunker?toggleMenu(category,catArry){let index=catArry.indexOf(category);console.log(“索引值”+index);if(catArry[this.prevClicked]&&this.prevClicked!==index){catArry[this.prevClicked].show=false;}catArry[index].show=!catArry[index].show;this.prevClicked=index;}使用
findIndex
方法从数组中查找类别,而不是
indexOf
应用filterTry后获取-1索引值。谢谢,我尝试了,但出现了错误,无法读取未定义的属性显示。请将更新的代码粘贴到此处或从中创建一个插件?切换菜单(类别,目录){let index=catArry.indexOf(category);console.log(“索引值”+index);if(catArry[this.prevClicked]&&this.prevClicked!==index){catArry[this.prevClicked].show=false;}catArry[index].show=!catArry[index].show;this.prevClicked=index;}使用
findIndex
方法从数组中而不是
indexOf
查找类别,在应用filterTry后获取-1索引值。
toggleMenu(index, catArry) {
if (catArry[this.prevClicked] && this.prevClicked !== index) {
  catArry[this.prevClicked].show = false;
}
catArry[index].show = !catArry[index].show;
this.prevClicked = index;
 }