Be pragmatic and simple write a code that will not applyFilters if the filter input is same as previous ! 

import {Component, ViewChild} from '@angular/core';
import {
  ClassInfo, GroupInfo,
  ProctoringReportFilters, ProctoringStatusFilterValue,
  TalviewTableComponent, TestTypeFilterValue
} from "@app/Modules/TalviewModule/talview/component/talview-table/talview-table.component";
import {UIModuleModule} from "@app/Modules/UiModule/uimodule/uimodule.module";
import {
  StartEndDateTimeComponent
} from "@app/Modules/AssessmentsModule/assessments/component/assessment-placement-test/start-end-date-time/start-end-date-time.component";
import {NgIf, TitleCasePipe} from "@angular/common";
import {SelectInstitutionComponent} from "@app/components/select-institution/select-institution.component";
import {ActivatedRoute} from "@angular/router";
import {FormsModule} from "@angular/forms";
import {RemoveDashSpacePipe} from "@app/Modules/TalviewModule/talview/remove-dash-space.pipe";

@Component({
    selector: 'app-talview-main',
  imports: [
    TalviewTableComponent,
    UIModuleModule,
    NgIf,
    SelectInstitutionComponent,
    FormsModule,
    RemoveDashSpacePipe,
    TitleCasePipe
  ],
    templateUrl: './talview-main.component.html',
    styleUrl: './talview-main.component.scss'
})
export class TalviewMainComponent {

  @ViewChild(TalviewTableComponent) talviewTable!: TalviewTableComponent;



  showFilter: boolean = false;
  permition: string = '';
  classes: ClassInfo[] = [];
  groups: GroupInfo[] = [];
  testTypes: TestTypeFilterValue[] = [];
  statuses: ProctoringStatusFilterValue[] = [];
  startDateFilter: Date | string | undefined;
  endDateFilter: Date | string | undefined;

  // Seletions

  isModifiedFilter: boolean = false;
  selectedClassIds: number[] = [];
  selectedGroupIds: number[] = [];
  selectedTestTypeIds: number[] = [];
  selectedStatusIds: number[] = [];
  selectedStartDate: string = '';
  selectedEndDate: string = '';

  onClassChange(selectedValues: number[]) {
    this.selectedClassIds = selectedValues;
    this.applyFilters();
  }

  onGroupChange(selectedValues: number[]) {
    this.selectedGroupIds = selectedValues;
    this.applyFilters();
  }

  onTestTypeChange(selectedValues: number[]) {
    this.selectedTestTypeIds = selectedValues;
    this.applyFilters();
  }

  onStatusChange(selectedValues: number[]) {
    this.selectedStatusIds = selectedValues;
    this.applyFilters();
  }

  onStartDateChange(date: Date | undefined) {
    if (date) {
      this.selectedStartDate = date.toISOString();
      this.applyFilters();
    }
  }

  onEndDateChange(date: Date | undefined) {
    if (date) {
      this.selectedEndDate = date.toISOString();
      this.applyFilters();
    }

  }

  onModifiedFilterChange() {
    this.applyFilters();
  }
  resetFilters() {
    this.selectedClassIds = [];
    this.selectedGroupIds = [];
    this.selectedTestTypeIds = [];
    this.selectedStatusIds = [];
    if (!this.selectedStartDate ) {
      this.selectedStartDate = new Date(new Date().setMonth(new Date().getMonth() - 1)).toISOString();
    }
    if (!this.selectedEndDate) {
      this.selectedEndDate = new Date().toISOString();
    }

    this.isModifiedFilter = false;
    this.applyFilters();
  }
  constructor(private activatedRoute: ActivatedRoute) {
    this.activatedRoute.queryParams.subscribe(params => {
      if (params['Permitions']) {
        this.permition = params['Permitions'];
      }
    });
  }

  updateFilter($event: ProctoringReportFilters) {
    console.log($event)
    this.classes = $event.Classes;
    this.groups = $event.Groups;
    this.testTypes = $event.TestTypes;
    this.statuses = $event.ProctoringStatuses
    if (!this.selectedStartDate ) {
      this.startDateFilter = new Date($event.StartDate);
      this.startDateFilter.setHours(0, 0, 0, 0);
    }
    if (!this.selectedEndDate ) {
      this.endDateFilter = new Date($event.EndDate);
      this.endDateFilter.setHours(0, 0, 0, 0);
    }
  }

  applyFilters() {

    const filterRequest = {
      classIds: this.selectedClassIds,
      groupIds: this.selectedGroupIds,
      testTypeIds: this.selectedTestTypeIds,
      proctoringSessionReviewStatusIds: this.selectedStatusIds,
      startDate: this.selectedStartDate,
      endDate: this.selectedEndDate,
      showModifiedProctoringStatusOnly: this.isModifiedFilter
    };

    this.talviewTable.applyFilters(filterRequest);
  }
}