数据过滤时,角度5接头不起作用

时间:2018-11-29 06:42:15

标签: angular

谁能告诉我我试图拼接复选框的值。但不起作用。

  

我的component.ts

articleCategories(e, cat_name) {
    if (e.checked) {
      // this.FiletredCategories.push(cat_name);
      this.articleDetails.forEach((card) => {
        card.article.forEach((obj) => {
          obj.content.forEach((obj1) => {
            let v = obj1.content;
            if (v.toLowerCase() === cat_name.toLowerCase()) {
              this.isShow = true;
              this.FiletredCategories=card;
            }
            else{
              let index = this.FiletredCategories.indexOf(cat_name);
              this.FiletredCategories.splice(index, 1);
            }
          });   
        });
      });
    }
  }

在我的ts文件中,我检查了值是否正在发送到FiletredCategories以进行过滤。如果我使用this.FiletredCategories.push(cat_name);则拼接工作正常,但复选框过滤无效

  

我的component.html

<div class="panel panel-default qk_li">
            <mat-list class="mat-list" role="list">
              <mat-list-item style="height: 25px;font-size: 14px;" *ngFor="let speciality of allCategories"
                class="form-check-input" role="listitem">
                <mat-checkbox [(ngModel)]="speciality.checked" (change)="articleCategories($event, speciality.cat_name)">{{speciality.cat_name}}</mat-checkbox>
              </mat-list-item>
            </mat-list>
          </div>

1 个答案:

答案 0 :(得分:0)

您可以寻找.splice()而不是.filter()的集合,然后重新分配:

this.FiletredCategories = this.FiletredCategories.filter(cat => cat.cat_name !== cat_name);

如果您共享数据结构,那么正确地回答它会很好。它只是基于您发布的代码。