Я сделал раскрывающийся список с множественным выбором, который реализован, как показано ниже
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
}
Хотя мой лог c работает нормально, но, будучи новичком в Angular / Rx JS (front-end development), я не очень уверен, что мой код - хороший код. Пожалуйста, дайте мне знать наши мысли или поправьте меня. Буду признателен, если кто-нибудь подскажет мне лучший способ реализации моего метода onSelect ().