我有一个搜索输入框和字母,全部。这些东西要根据输入进行搜索。现在,我正在搜索字母表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;
})
})
}
}
演示:演示
在 app.pipe.ts 第 22 行的mainArr.forEach(element => {
之前添加:
mainArr = mainArr.map(e => {
return {...e};
});
问题是,当您通过searchMedicalOffices
管道运行medicalOfficesList
时,您将mainArr
上的memberFacilities
(在本例中为medicalOfficesList
(替换为新的过滤数组。通过在上面的第 22 行添加新代码,您将在替换每个对象memberFacilities
属性之前,在 mainArr
中创建每个对象的新(浅(副本。这样,原始medicalOfficesList
将保持不变。