fix(ivy): improve ExpressionChangedAfterChecked error (#34381)
Prior to this change, the ExpressionChangedAfterChecked error thrown in Ivy was missing useful information that was available in View Engine, specifically: missing property name for proprty bindings and also the content of the entire property interpolation (only a changed value was displayed) if one of expressions was changed unexpectedly. This commit improves the error message by including the mentioned information into the error text. PR Close #34381
This commit is contained in:

committed by
Kara Erickson

parent
3e201181bb
commit
9d1175e2b2
@ -8,7 +8,8 @@
|
||||
|
||||
import {devModeEqual} from '../change_detection/change_detection_util';
|
||||
import {assertDataInRange, assertLessThan, assertNotSame} from '../util/assert';
|
||||
import {throwErrorIfNoChangesMode} from './errors';
|
||||
|
||||
import {getExpressionChangedErrorDetails, throwErrorIfNoChangesMode} from './errors';
|
||||
import {LView} from './interfaces/view';
|
||||
import {getCheckNoChangesMode} from './state';
|
||||
import {NO_CHANGE} from './tokens';
|
||||
@ -44,7 +45,10 @@ export function bindingUpdated(lView: LView, bindingIndex: number, value: any):
|
||||
// (before the change detection was run).
|
||||
const oldValueToCompare = oldValue !== NO_CHANGE ? oldValue : undefined;
|
||||
if (!devModeEqual(oldValueToCompare, value)) {
|
||||
throwErrorIfNoChangesMode(oldValue === NO_CHANGE, oldValueToCompare, value);
|
||||
const details =
|
||||
getExpressionChangedErrorDetails(lView, bindingIndex, oldValueToCompare, value);
|
||||
throwErrorIfNoChangesMode(
|
||||
oldValue === NO_CHANGE, details.oldValue, details.newValue, details.propName);
|
||||
}
|
||||
}
|
||||
lView[bindingIndex] = value;
|
||||
|
Reference in New Issue
Block a user