diff --git a/packages/core/src/view/util.ts b/packages/core/src/view/util.ts index dae387cb9f..90d1580c2a 100644 --- a/packages/core/src/view/util.ts +++ b/packages/core/src/view/util.ts @@ -98,9 +98,10 @@ export function checkBindingNoChanges( view: ViewData, def: NodeDef, bindingIdx: number, value: any) { const oldValue = view.oldValues[def.bindingIndex + bindingIdx]; if ((view.state & ViewState.BeforeFirstCheck) || !devModeEqual(oldValue, value)) { + const bindingName = def.bindings[def.bindingIndex].name; throw expressionChangedAfterItHasBeenCheckedError( - Services.createDebugContext(view, def.nodeIndex), oldValue, value, - (view.state & ViewState.BeforeFirstCheck) !== 0); + Services.createDebugContext(view, def.nodeIndex), `${bindingName}: ${oldValue}`, + `${bindingName}: ${value}`, (view.state & ViewState.BeforeFirstCheck) !== 0); } } diff --git a/packages/core/test/view/component_view_spec.ts b/packages/core/test/view/component_view_spec.ts index 2ccba8ed1a..3f073ec7ff 100644 --- a/packages/core/test/view/component_view_spec.ts +++ b/packages/core/test/view/component_view_spec.ts @@ -132,7 +132,7 @@ const addEventListener = '__zone_symbol__addEventListener'; value = 'v2'; expect(() => Services.checkNoChangesView(view)) .toThrowError( - `ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'v1'. Current value: 'v2'.`); + `ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'a: v1'. Current value: 'a: v2'.`); }); it('should support detaching and attaching component views for dirty checking', () => { diff --git a/packages/core/test/view/embedded_view_spec.ts b/packages/core/test/view/embedded_view_spec.ts index 9ad1556b07..f0da7901f1 100644 --- a/packages/core/test/view/embedded_view_spec.ts +++ b/packages/core/test/view/embedded_view_spec.ts @@ -145,7 +145,7 @@ import {compViewDef, compViewDefFactory, createAndGetRootNodes, createEmbeddedVi childValue = 'v2'; expect(() => Services.checkNoChangesView(parentView)) .toThrowError( - `ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'v1'. Current value: 'v2'.`); + `ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'name: v1'. Current value: 'name: v2'.`); }); it('should destroy embedded views', () => {