javascript - 如何使用 angular2 primeng 让子元素显示在搜索中并在单击“全部”时显示所有元素

标签 javascript angular

我有一个搜索输入框和字母表,全部。这些东西要根据输入进行搜索。 现在,我正在搜索字母表m,它给了我子列表,但是当我单击ALL时,元素没有被重置。 场景:首先单击“p-test17”左侧的按钮,这样我们就可以看到子元素列表。 现在,点击M,或者通过输入键搜索“m”,它会显示带有m的子元素。 现在单击ALL,它必须重置所有内容,但它不会显示“p-test17”中的所有子元素,如初始步骤中所示。

请帮忙。

TS:

searchFacility(search) {
    this.sLetter = search;
    let memberFacilities = true;
    if (search) {
      this.dtFacilities.expandedRows = [];
      setTimeout(() => {
        this.dtFacilities.expandedRows = this.dtFacilities.value;
        console.log(this.dtFacilities.value,"this.dtFacilities.value")
        this.dtFacilities.value.forEach(m => {
          m.memberFacilities.forEach(f => {
            let mySearch = search.toLowerCase();
            let facilityName = f.facilityName.toLowerCase();
            if (facilityName && facilityName.includes(mySearch)) {
              f.isShowMember = false;
              memberFacilities = false;
            } else {
              f.isShowMember = true;
              memberFacilities = true;
            }
          })
        })
        if (memberFacilities) {
          this.dtFacilities.expandedRows = [];
        } 
      }, 100);

    }
    if (search == "") {
      this.dtFacilities.expandedRows = [];
      this.dtFacilities.expandedRows = this.medicalOfficesList;
      this.medicalOfficesList.forEach(m => {
        m.memberFacilities.map(f => {
          f.isShowMember = false;
        })
      }) 
    }
    else {
      this.dtFacilities.expandedRows = [];
      this.dtFacilities.value.forEach(m => {
        m.memberFacilities.map(f => {
          f.isShowMember = false;
        })
      })

    }
  }

演示:DEMO

最佳答案

在 app.pipe.ts 第 22 行 mainArr.forEach(element => {) 之前添加:

mainArr = mainArr.map(e => {
  return {...e};
});

问题是,当您通过 searchMedicalOffices 管道运行 medicalOfficesList 时,您将替换 mainArr 上的 memberFacilities (在本例中为 medicalOfficesList),带有新的过滤数组。通过在第 22 行添加上面的新代码,您将为 mainArr 中的每个对象创建一个新的(浅)副本,然后再替换它的 memberFacilities 属性。这样,原始的 medicalOfficesList 将保持不变。

关于javascript - 如何使用 angular2 primeng 让子元素显示在搜索中并在单击“全部”时显示所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55720564/

相关文章:

javascript - 在从不同域加载页面的 iframe 中访问 "pre"标记

javascript - 如何根据子属性将 JSON 排序到数组中

javascript - 在 JavaScript 中获取内容类型的默认文件扩展名?

javascript - 使用 jquery 检测 mousemove

Angular 2 - NGX-DataTable 过滤器 - 替换 View 子级

Angular 构建 - 缺少 gzip

javascript - 独立的网络和工作进程,是否应该为它们各自打开一个新连接?

javascript - 如何在 Angular 6 中将输入值传递给表单提交的函数?

angular - 当我使用 Azure 静态 Web 应用程序时,为什么 msal-angular `loginPopup` 会弹出它自己的页面

node.js - 安装node-sass文件后出现错误