[英]Angular 6: ExpressionChangedAfterItHasBeenCheckedError triggered from select drop-down event
哪些代码更改可以解决下面描述的错误?
用例
通过模式保护下拉输入UI免受意外的选定值更改。 但是,连接到下拉列表的事件(单击,焦点或其他)会导致在开发模式下在Chrome控制台中观察到的ExpressionChangedAfterItHasBeenCheckedError。
观察结果
单击下拉列表时,将抛出ExpressionChangedAfterItHasBeenCheckedError (请参阅控制台)
预期结果
单击下拉列表时,将打开模态而不会出现错误
演示
stackblitz中的演示链接
笔记
哪些代码更改可以解决下面描述的错误?
像这样的代码可以帮助你:
<select
[(ngModel)]="building.venueId"
#ngModel="ngModel"
^^^^^^^^^^^^^^^^^^
get hold of NgModel instance
...
(click)="ngModel.control.markAsTouched(); confirmChangeItem(building.venueId)">
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
and prepare FormControl to the changes
更新
我忘了说你可以在这种情况下删除cdRef.detectChanges
和microtask所以我很高兴知道你自己猜对了
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.