From 61dada8cf248ef08b747d331f83b500086e085e9 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Fri, 1 Dec 2017 19:26:47 +0100 Subject: [PATCH] fix(chip-list): stateChanges stream not being completed (#8636) Fixes the `stateChanges` subject not being completed, potentially causing a memory leak if the subscribers forget to unsubscribe. --- src/lib/chips/chip-list.spec.ts | 9 +++++++++ src/lib/chips/chip-list.ts | 1 + 2 files changed, 10 insertions(+) diff --git a/src/lib/chips/chip-list.spec.ts b/src/lib/chips/chip-list.spec.ts index ab2fa74c7cec..dda5c16f2ee5 100644 --- a/src/lib/chips/chip-list.spec.ts +++ b/src/lib/chips/chip-list.spec.ts @@ -346,6 +346,15 @@ describe('MatChipList', () => { }); }); + it('should complete the stateChanges stream on destroy', () => { + const spy = jasmine.createSpy('stateChanges complete'); + const subscription = chipListInstance.stateChanges.subscribe(undefined, undefined, spy); + + fixture.destroy(); + expect(spy).toHaveBeenCalled(); + subscription.unsubscribe(); + }); + }); describe('selection logic', () => { diff --git a/src/lib/chips/chip-list.ts b/src/lib/chips/chip-list.ts index 804f7ed66e62..bbcb3b7f1379 100644 --- a/src/lib/chips/chip-list.ts +++ b/src/lib/chips/chip-list.ts @@ -376,6 +376,7 @@ export class MatChipList extends _MatChipListMixinBase implements MatFormFieldCo this._changeSubscription.unsubscribe(); } this._dropSubscriptions(); + this.stateChanges.complete(); }