Angular material 使用“角度材质”复选框根据类别过滤球场
我有两个数组,分别称为1.Courses和2.Categories每个课程都有不同的类别。我想通过category使用mat复选框过滤课程 示例:javascript是一个课程名称,脚本编写是类别 这是 下面是该方法的屏幕截图:Angular material 使用“角度材质”复选框根据类别过滤球场,angular-material,angular6,Angular Material,Angular6,我有两个数组,分别称为1.Courses和2.Categories每个课程都有不同的类别。我想通过category使用mat复选框过滤课程 示例:javascript是一个课程名称,脚本编写是类别 这是 下面是该方法的屏幕截图: 它应该适用于多个复选框过滤,谢谢您。因此,使用您当前的方法IMO,最简单的方法是创建一个新的课程数组filteredCourses,并在模板中迭代 OnInit,将filteredCourses设置为courses,以便在init上呈现所有课程 ngOnInit()
它应该适用于多个复选框过滤,谢谢您。因此,使用您当前的方法IMO,最简单的方法是创建一个新的课程数组
filteredCourses
,并在模板中迭代
OnInit
,将filteredCourses
设置为courses
,以便在init上呈现所有课程
ngOnInit() {
this.filteredCourses = this.courses;
}
接下来,您需要某种方法来维护所选类别的列表。如果您使用内置表格的Angulars,这会容易得多,但是,如果没有,我可以提出以下建议:
onSelect
(单击),将单击的类别添加到所选类别的列表中(单击时,如果不存在,则添加,否则删除)
然后,下一步是将课程
数组过滤到类别ID
包含在所选类别
列表中的课程,并使用结果设置过滤课程
数组,从而允许模板更新。因此,您的onSelect
函数变为:
onSelect(selectedCategory: any) {
this.selectCategory(selectedCategory);
this.filteredCourses = this.courses.filter((course: any) => {
return this.selectedCategories.findIndex((cat: any) => {
return course.categoryId === cat.id;
}) !== -1;
});
}
更新的闪电战建议:因此,使用您当前的方法,IMO,最简单的方法是创建一个新的课程数组
filteredCourses
,并在模板中迭代
OnInit
,将filteredCourses
设置为courses
,以便在init上呈现所有课程
ngOnInit() {
this.filteredCourses = this.courses;
}
接下来,您需要某种方法来维护所选类别的列表。如果您使用内置表格的Angulars,这会容易得多,但是,如果没有,我可以提出以下建议:
onSelect
(单击),将单击的类别添加到所选类别的列表中(单击时,如果不存在,则添加,否则删除)
然后,下一步是将课程
数组过滤到类别ID
包含在所选类别
列表中的课程,并使用结果设置过滤课程
数组,从而允许模板更新。因此,您的onSelect
函数变为:
onSelect(selectedCategory: any) {
this.selectCategory(selectedCategory);
this.filteredCourses = this.courses.filter((course: any) => {
return this.selectedCategories.findIndex((cat: any) => {
return course.categoryId === cat.id;
}) !== -1;
});
}
更新闪电战建议: