angular - 错误:ExpressionChangedAfterItHasBeenCheckedError:以前的值:'ng-untouched: true'。当前值:'ng-untouched: false'
问题描述
我用最少的代码在StackBlitz上重现了这个问题。
第一步:点击文字
第 2 步:关注文本字段
第 3 步:输入 enter 并检查控制台是否存在此错误
错误:ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改。以前的值:'ng-untouched: true'。当前值:'ng-untouched: false'。
解决方案
您必须使用以下detectChanges()
方法手动触发指令中的更改检测ChangeDetectorRef
像这样修改editable-on-enter-inplace.directive.ts
:
import { Directive,HostListener ,ChangeDetectorRef} from '@angular/core';
constructor(private editable: EditableInplaceComponent,private cdr: ChangeDetectorRef) { }
@HostListener('keyup.enter')
onEnter() {
this.editable.toViewMode();
this.cdr.detectChanges();
}
推荐阅读
- html - 调整大小并在内部按百分比调整图像
- angular - Angular8 - 从 FormData 获取值
- python - 如何在 Django Channels Consumers 中访问 URL 参数
- html - Chrome 扩展程序不会加载。我是否错误地命名了文件?
- linux - 尝试安装 Linux 内核头文件但出现错误
- javascript - Convert a PDF file to Google Doc using Google Drive API v3
- reactjs - 如何在 React Navigation 5 中更改选项卡栏的项目对齐方式?
- apache-camel - 如何使用 Camel 和 IBM MQ 配置消费者级别的事务重新传递
- python - pip3 无法获取 URL https://pypi.org/simple/pip/:确认 ssl 证书时出现问题
- mapping - 解析块映射时需要一个键