【发布时间】:2020-02-17 23:58:20
【问题描述】:
我做了一个多选下拉菜单,如下所示
MyFilter{
key: string; // uniquely identifies selected filter among many filters on page
order: number; // display order of filter on page
options: DropListOption[]; // options in a dropdown
values: DropListOption[]; // selected values from dropdown
}
DropListOption{
label: string; // name of option
value: any; //value of option
}
我已经实现了一个在选中或取消选中复选框时调用的方法,如下所示:
onSelect(key: string, option: DropListOption): void{
const filtersOpt = this.filters; // type of filter is MyFilter
filtersOpt.map((filter) => {
if(filter.key === key){
const selected: boolean = !!filter.values.find((opt) => opt.value === option.value);
filters.values = selected // filters.values used as property binding to display number of selected values
? filters.values.filter((opt) => opt.value !== option.value)
: [...filters.values, option];
}
return filter;
});
this.updateFilters.emit(filtersOpt); //emitting to parent component
}
虽然我的逻辑运行良好,但对 Angular/RxJS(前端开发)不熟悉,但我不太确定我的代码是否是好的代码。请你让我知道我们的想法或纠正我。如果有人能告诉我实现 onSelect() 方法的更好方法,我将不胜感激。
【问题讨论】:
标签: angular functional-programming rxjs rxjs-pipeable-operators