From ff5c4e5d881695f637820dd101709cfc7c7bbb65 Mon Sep 17 00:00:00 2001 From: Thomas Heller Date: Wed, 8 Jul 2020 13:36:18 +0200 Subject: [PATCH] fix(filter-field): Fixes an issue with validation flickering on free text. Fixes #1180 --- .../filter-field/src/filter-field-validation.ts | 2 +- libs/barista-components/filter-field/src/filter-field.ts | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/libs/barista-components/filter-field/src/filter-field-validation.ts b/libs/barista-components/filter-field/src/filter-field-validation.ts index bee1f0d098..781b3e32af 100644 --- a/libs/barista-components/filter-field/src/filter-field-validation.ts +++ b/libs/barista-components/filter-field/src/filter-field-validation.ts @@ -28,7 +28,7 @@ export interface DtFilterFieldValidator { export class DtFilterFieldControl extends FormControl { constructor(private _validators: DtFilterFieldValidator[] = []) { super( - null, + '', _validators.map((validator) => validator.validatorFn), null, ); diff --git a/libs/barista-components/filter-field/src/filter-field.ts b/libs/barista-components/filter-field/src/filter-field.ts index 605e1c5931..733cd4e6e0 100644 --- a/libs/barista-components/filter-field/src/filter-field.ts +++ b/libs/barista-components/filter-field/src/filter-field.ts @@ -945,7 +945,11 @@ export class DtFilterField /** Write a value to the filter field control if there is a control active */ private _writeControlValue(value: string): void { - if (this._control) { + // Only write the value when it is actually different + // setting the value to it's old value and marking the control + // dirty will trigger validation too many times, resulting in a flickering + // of the validation flag. + if (this._control && this._control.value !== value) { this._control.setValue(value); this._control.markAsDirty(); this._control.markAsTouched();