【发布时间】:2019-05-15 13:43:06
【问题描述】:
我正在开发 Stackblitz,但不幸撞到了墙,现在只能绕圈子!
我希望根据需要包含在特定对象中的多个复选框值来过滤数组,以便将其留在 DOM 中。
这是 Stackblitz - https://stackblitz.com/edit/angular-ycebgh
这是我的数组 json:
cards = [
{
name: "Daniel",
profile: [
{
type: "Gender",
name: "Male"
},
{
type: "Fashion",
name: "Footwear"
}
]
},
{
name: "John",
profile: [
{
type: "Gender",
name: "Male"
},
{
type: "Family",
name: "Children"
}
]
},
{
name: "Sarah",
profile: [
{
type: "Gender",
name: "Female"
}
]
},
{
name: "Janice",
profile: [
{
type: "Gender",
name: "Female"
},
{
type: "Family",
name: "Children"
}
]
}
]
我目前正在向父级发送复选框单击事件,我需要父级然后根据所选复选框值过滤对象。
我已经成功地做到了一次,但有多个被证明是一场斗争。
类似:
onFilter(options) {
console.log(options);
this.cards.filter(x => x.profile == options.value );
}
任何了解我需要做些什么来实现这一点都会很棒。
【问题讨论】:
-
我以前也做过类似的事情。如果选中,我可以建议从复选框发出一个值。然后将该值推送到包含您要过滤的所有过滤值的数组。然后您遍历这些过滤值并查看在您的数据中找到哪些值。然后,如果您找到这些项目,则将数据推送到仅包含过滤项目的数组。然后显示该数组。如果您取消选中一个复选框,您将删除从过滤值数组发出的值,您的数据将相应更改。
-
@Florian 非常感谢。过滤工作正常,但这导致的唯一问题是使用按钮 (A-Z) 的排序现在不起作用。知道如何解决这个问题吗?
-
@DanielBailey 你有实现这个的代码示例吗?
-
@DBoi 我更新了 stackblitz。 Daniel Bailey 所描述的就是我所做的
标签: angular typescript filter eventemitter