javascript - 第一个下拉列表选择不会过滤第二个下拉列表

标签 javascript angular angular-template

我试图根据第一个下拉列表的选择来过滤下拉列表,在我的控制台日志中,一切都很好,但第二个下拉列表始终显示所有结果,而不是过滤的结果,这是我的做法:

<!--Group-->
<div class="form-group">
  <label class="control-label dash-control-label col-xs-3">GROUP:</label>
  <div class="col-xs-9">
    <select class="form-control" style="width: 100%;"
            data-minimum-results-for-search="Infinity" name="articleGroups" required (change)="filterSubById(article.mainGroup.id)" [(ngModel)]="article.mainGroup">
      <option disabled [ngValue]="null">-/-</option>
      <option [ngValue]="group" *ngFor="let group of mainGroups">{{group.title}}</option>
    </select>
  </div> 
</div>

<!--Subgroup-->
<div class="form-group">
  <label class="control-label dash-control-label col-xs-3">SUBGROUP:</label>
  <div class="col-xs-9">
    <select class="form-control" style="width: 100%;" name="subGroup" required [(ngModel)]="article.subGroup">
      <option disabled [ngValue]="null">-/-</option>
      <option [ngValue]="subgroup" *ngFor="let subgroup of subGroups">{{subgroup.title}}</option>
    </select>
  </div>
</div>

最佳答案

您需要将 filterBySubId 方法的结果传递回 View 。您没有对返回值执行任何操作。

我会做这样的事情:

filterSubById(Id) {
    this.filteredSubGroups = this.subGroups.filter(item => item.parentId == Id);
}

并且在 View 中

<option [ngValue]="subgroup"
        *ngFor="let subgroup of filteredSubGroups">{{subgroup.title}}</option>

关于javascript - 第一个下拉列表选择不会过滤第二个下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49921493/

相关文章:

javascript - ReactJS 中的 "IndexOf"函数不像 vanilla JS 方法那样工作

javascript - 如何在读取文件时在 JSON.parse() 之前删除特殊字符

angular - 如何将标签文本放在 Angular Material Stepper 中的图标下?

javascript - 将父范围值传递给 Angular 中的 ng-repeat 循环

angular 4 可重用组件和模板

javascript - 如何将 Promise.all().then 返回给函数

javascript - Angular2/Javascript - 检索 for 循环内生成的变量的新值

html - 如何正确使用MatTableExporterModule导出数据到excel?

angular - 模拟@ngrx/router-store 的 selectRouteParam

Angular 渲染的 DOM html 自定义属性