Skip to content

Commit d3bf54b

Browse files
Garbett1alexeagle
authored andcommitted
feat(core): add binding name to content changed error (#20352)
Adding the binding name to the error message recieved by the user gives extra context on what exactly changed. The tests are also updated to reflect the new error message. PR Close #20352
1 parent 7e3f9a4 commit d3bf54b

File tree

3 files changed

+5
-4
lines changed

3 files changed

+5
-4
lines changed

packages/core/src/view/util.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,10 @@ export function checkBindingNoChanges(
9898
view: ViewData, def: NodeDef, bindingIdx: number, value: any) {
9999
const oldValue = view.oldValues[def.bindingIndex + bindingIdx];
100100
if ((view.state & ViewState.BeforeFirstCheck) || !devModeEqual(oldValue, value)) {
101+
const bindingName = def.bindings[def.bindingIndex].name;
101102
throw expressionChangedAfterItHasBeenCheckedError(
102-
Services.createDebugContext(view, def.nodeIndex), oldValue, value,
103-
(view.state & ViewState.BeforeFirstCheck) !== 0);
103+
Services.createDebugContext(view, def.nodeIndex), `${bindingName}: ${oldValue}`,
104+
`${bindingName}: ${value}`, (view.state & ViewState.BeforeFirstCheck) !== 0);
104105
}
105106
}
106107

packages/core/test/view/component_view_spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ const addEventListener = '__zone_symbol__addEventListener';
132132
value = 'v2';
133133
expect(() => Services.checkNoChangesView(view))
134134
.toThrowError(
135-
`ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'v1'. Current value: 'v2'.`);
135+
`ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'a: v1'. Current value: 'a: v2'.`);
136136
});
137137

138138
it('should support detaching and attaching component views for dirty checking', () => {

packages/core/test/view/embedded_view_spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ import {compViewDef, compViewDefFactory, createAndGetRootNodes, createEmbeddedVi
145145
childValue = 'v2';
146146
expect(() => Services.checkNoChangesView(parentView))
147147
.toThrowError(
148-
`ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'v1'. Current value: 'v2'.`);
148+
`ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'name: v1'. Current value: 'name: v2'.`);
149149
});
150150

151151
it('should destroy embedded views', () => {

0 commit comments

Comments
 (0)