From 0a0ddcf3b3d0e7e6bde012b5465d69d0e4fc3584 Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Fri, 21 Feb 2025 21:54:56 +0100 Subject: [PATCH] fix(material/datepicker): changed after checked error when assigning end value (#30534) Fixes that there was a hidden "changed after checked" error in the range picker when the secondary value was being assinged without notifying Angular. Fixes #30526. (cherry picked from commit 7ef405c4e6014c1724788c3561eaff3701e654d1) --- src/material/datepicker/date-range-input-parts.ts | 14 +++++++------- tools/public_api_guard/material/datepicker.md | 2 -- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/material/datepicker/date-range-input-parts.ts b/src/material/datepicker/date-range-input-parts.ts index dcffd998400a..946d8b6ea1c0 100644 --- a/src/material/datepicker/date-range-input-parts.ts +++ b/src/material/datepicker/date-range-input-parts.ts @@ -193,6 +193,12 @@ abstract class MatDateRangeInputPartBase opposite?._validatorOnChange(); } + protected override _formatValue(value: D | null) { + super._formatValue(value); + // Any time the input value is reformatted we need to tell the parent. + this._rangeInput._handleChildValueChange(); + } + /** return the ARIA accessible name of the input element */ _getAccessibleName(): string { return _computeAriaAccessibleName(this._elementRef.nativeElement); @@ -264,16 +270,10 @@ export class MatStartDate extends MatDateRangeInputPartBase { if (this._model) { const range = new DateRange(value, this._model.selection.end); this._model.updateSelection(range, this); + this._rangeInput._handleChildValueChange(); } } - protected override _formatValue(value: D | null) { - super._formatValue(value); - - // Any time the input value is reformatted we need to tell the parent. - this._rangeInput._handleChildValueChange(); - } - override _onKeydown(event: KeyboardEvent) { const endInput = this._rangeInput._endInput; const element = this._elementRef.nativeElement; diff --git a/tools/public_api_guard/material/datepicker.md b/tools/public_api_guard/material/datepicker.md index d86d3c818097..592c92d4ff40 100644 --- a/tools/public_api_guard/material/datepicker.md +++ b/tools/public_api_guard/material/datepicker.md @@ -828,8 +828,6 @@ export class MatStartDate extends MatDateRangeInputPartBase { // (undocumented) protected _assignValueToModel(value: D | null): void; // (undocumented) - protected _formatValue(value: D | null): void; - // (undocumented) protected _getValueFromModel(modelValue: DateRange): D | null; // (undocumented) _onKeydown(event: KeyboardEvent): void;