From 22ddc60e65098c5d1c2b71aee31bad8d1165a1d2 Mon Sep 17 00:00:00 2001 From: stygian-desolator <73412177+stygian-desolator@users.noreply.github.com> Date: Mon, 30 Nov 2020 19:42:18 +0800 Subject: [PATCH] fix(module:cascader): restore its value after cancel search (#6088) --- components/cascader/cascader.component.ts | 4 ++++ components/cascader/cascader.spec.ts | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/components/cascader/cascader.component.ts b/components/cascader/cascader.component.ts index 23f99f8ff20..c760fd968a7 100644 --- a/components/cascader/cascader.component.ts +++ b/components/cascader/cascader.component.ts @@ -430,6 +430,10 @@ export class NzCascaderComponent implements NzCascaderComponentAsSource, OnInit, this.scrollToActivatedOptions(); } + if (!visible) { + this.inputValue = ''; + } + this.menuVisible = visible; this.nzVisibleChange.emit(visible); this.cdr.detectChanges(); diff --git a/components/cascader/cascader.spec.ts b/components/cascader/cascader.spec.ts index 1f2ca52e918..b72d42d44fa 100644 --- a/components/cascader/cascader.spec.ts +++ b/components/cascader/cascader.spec.ts @@ -1368,6 +1368,24 @@ describe('cascader', () => { expect(itemEl1.innerText).toBe('Zhejiang'); })); + it('should clear input value when searching cancel', fakeAsync(() => { + testComponent.values = ['zhengjiang', 'hangzhou', 'xihu']; + testComponent.nzShowSearch = true; + fixture.detectChanges(); + cascader.nativeElement.click(); + testComponent.cascader.inputValue = 'o'; + fixture.detectChanges(); + flush(); + fixture.detectChanges(); + expect(testComponent.cascader.menuVisible).toBe(true); + dispatchKeyboardEvent(cascader.nativeElement, 'keydown', ESCAPE); + fixture.detectChanges(); + flush(); + fixture.detectChanges(); + expect(testComponent.cascader.inputValue).toBe(''); + expect(testComponent.values).toEqual(['zhengjiang', 'hangzhou', 'xihu']); + })); + it('should support nzLabelProperty', fakeAsync(() => { testComponent.nzShowSearch = true; testComponent.nzLabelProperty = 'l';