I have 4 checkboxes that filter based on its name/identifierValue. When the page loads ALL should be selected. If I click any other box ‘ALL’ should deselect and I then filter based on the selection. Then, if I click ALL all of the other checkboxes should deselect but ALL
identifiers should show.
Currently, I set the checkboxes to true or false via FormGroup in parent component.
I then listen to form changes to hanlde the logic.
The problem is I have to uncheck ALL in order to select another box.
Then when I click ALL after selecting other boxes they deselect properly but all items in the table dont show as expected.
After that I have to toggle all of the other boxes just to get the filtering back working again.
Here is the method I’m calling via ngOnInit by way of initializeSearchPage().
handleCheckboxSelection(values: any) {
const allSelected = values.ALL;
const checkBox1Selected = values.Checkbox1;
const checkBox2Selected = values.Checkbox2;
const checkBox3Selected = values.Checkbox3;
if (allSelected) {
// If "All" is selected, deselect others
this.reportListFG.get('filterGroup')?.patchValue(
{
Checkbox1: false,
Checkbox2: false,
Checkbox3: false,
},
{ emitEvent: false } // Prevent infinite loop
);
} else {
// If "All" is not selected, deselect "All" if any other is selected
if (checkBox1Selected || checkBox2Selected || checkBox3Selected) {
this.reportListFG.get('filterGroup')?.patchValue(
{
ALL: false,
},
{ emitEvent: false }
);
}
Here is my stackblitz