angular: ExpressionChangedAfterItHasBeenCheckedError - HostBinding and Animations `.done`
I’m submitting a…
[ ] Regression (a behavior that used to work and stopped working in a new release)
[x] Bug report
[ ] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question
Current behavior
When I am using HostBinding
and Animation .done
and I update an property that is being using in HostBinding I am getting ExpressionChangedAfterItHasBeenCheckedError
when the value is changed too quickly, even though I am using markForCheck
.
ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'undefined'. Current value: 'true'.
at viewDebugError (errors.ts:30)
at expressionChangedAfterItHasBeenCheckedError (errors.ts:29)
at checkBindingNoChanges (util.ts:145)
at checkNoChangesNodeInline (view.ts:477)
at checkNoChangesNode (view.ts:568)
at debugCheckNoChangesNode (services.ts:557)
at debugCheckRenderNodeFn (services.ts:500)
at Object.eval [as updateRenderer] (AppComponent_Host.html:1)
at Object.debugUpdateRenderer [as updateRenderer] (services.ts:477)
at checkNoChangesView (view.ts:383)
Expected behavior
No error
Minimal reproduction of the problem with instructions
Below please find a simple reproduction; https://stackblitz.com/edit/expressionchangedafterithasbeencheckederror-hostbinding
To get the error, simply click the button
quickly several times.
What is the motivation / use case for changing the behavior?
I believe that this shouldn’t be happening, I don’t have bidirectional data flow which might cause such issues, And I am explicitly saying that there are changes, as I am using markForCheck
.
Environment
Angular 4.3.4
About this issue
- Original URL
- State: closed
- Created 7 years ago
- Reactions: 11
- Comments: 20 (5 by maintainers)
Still an issue on 12.1.3
yea, we had an issue that required a rollback of the classic plain property and markForCheck support that made it into 17.1.3. If you check 17.1.2, you should see it working. We’ll need to determine if it’s something we can support again but generally signals are the way to go to avoid the error.
@reduckted a reproduction would be helpful. I have a suspicion about the cause but would like to verify.
OK I see the issue here, looking into it.