From 409ffa9ccdb5627c107bb0d9861dd52af7a47c0f Mon Sep 17 00:00:00 2001 From: Aaron Steinfeld Date: Tue, 23 Feb 2021 13:17:09 -0500 Subject: [PATCH] fix: make table remove subscription on disconnect --- projects/components/src/table/data/table-cdk-data-source.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/projects/components/src/table/data/table-cdk-data-source.ts b/projects/components/src/table/data/table-cdk-data-source.ts index be469b59d..4f389dcb2 100644 --- a/projects/components/src/table/data/table-cdk-data-source.ts +++ b/projects/components/src/table/data/table-cdk-data-source.ts @@ -1,6 +1,6 @@ import { DataSource } from '@angular/cdk/collections'; import { Dictionary, forkJoinSafeEmpty, isEqualIgnoreFunctions, RequireBy, sortUnknown } from '@hypertrace/common'; -import { BehaviorSubject, combineLatest, NEVER, Observable, of, Subject, throwError } from 'rxjs'; +import { BehaviorSubject, combineLatest, NEVER, Observable, of, Subject, Subscription, throwError } from 'rxjs'; import { catchError, debounceTime, map, mergeMap, startWith, switchMap, tap } from 'rxjs/operators'; import { PageEvent } from '../../paginator/page.event'; import { PaginationProvider } from '../../paginator/paginator-api'; @@ -37,6 +37,7 @@ export class TableCdkDataSource implements DataSource { private readonly loadingStateSubject: Subject = new BehaviorSubject({ loading$: NEVER }); + private changeSubscription?: Subscription; public loadingStateChange$: Observable = this.loadingStateSubject.asObservable(); @@ -54,7 +55,7 @@ export class TableCdkDataSource implements DataSource { ****************************/ public connect(): Observable> { - this.buildChangeObservable() + this.changeSubscription = this.buildChangeObservable() .pipe( tap(() => this.loadingStateSubject.next({ loading$: NEVER })), /** @@ -80,6 +81,7 @@ export class TableCdkDataSource implements DataSource { } public disconnect(): void { + this.changeSubscription?.unsubscribe(); this.rowsChange$.complete(); this.loadingStateSubject.complete(); }