html - 'HTMLInputElement' 类型上不存在属性'touched'
问题描述
<input id="fileTitleVar" type="text" #fileTitleVar>
<span *ngIf="fileTitleVar.touched && fileTitleVar.blurred">
Input has been touched
</span>
'HTMLInputElement' 类型上不存在属性'touched' 'HTMLInputElement' 类型上不存在属性'blurred'
当我使用“ fullTemplateTypeCheck ”选项编译我的角度应用程序时,我可以看到这些错误。
重现此问题 创建一个角度应用程序。
in "*tsconfig.app.json*" file update below code
"angularCompilerOptions": {
"enableIvy": true,
"fullTemplateTypeCheck": true
}
并在 app.component.html 文件中使用上面的代码。当我们运行 ng serve 命令时,它会抛出上述错误。
<input id="fileTitleVar" type="text" #fileTitleVar>
<span *ngIf="fileTitleVar.touched && fileTitleVar.blurred">
Input has been touched
</span>
当我从“tsconfig.app.json”文件中删除 enableIvy 和 fullTemplateTypeCheck 属性时,错误不应该出现。
解决方案
您需要使用 ngModel 指令使 touch 标志可用:
<input id="fileTitleVar" type="text" ngModel #fileTitleVar="ngModel">
<span *ngIf="fileTitleVar.touched">
Input has been touched
</span>
正如我记得 ngModel 指令中不存在 blurred 一样,您可以添加[ngModelOptions]="{updateOn: 'blur'}"
:
<input id="fileTitleVar" type="text" ngModel [ngModelOptions]="{updateOn: 'blur'}" #fileTitleVar="ngModel">
<span *ngIf="fileTitleVar.touched">
Input has been touched
</span>
也不要忘记导入 FormsModule 以使 ngModel 指令可用。
推荐阅读
- spring-boot - 使用 Heroku Maven 插件部署 Spring Boot 应用程序
- angular - 使用路由器发送状态未定义
- yaml - CircleCi YAML 配置给出了意外的字符串错误
- c++ - 用cstring删除c ++中的字符
- python - Python快速将多个字符插入字符串的所有可能位置
- sql - SQL Oracle - 如何找到同一张表的最终值?
- javascript - 登录并抓取使用 CORS(AWS) 和 JS 的网站以使用 Google Apps 脚本填充自身
- gem5 - gem5中的伪指令是什么?
- sql-server - SQL Server 存储过程报告成功执行,但其中的查询不执行
- r - ggplot + imager = 拉伸图像和不正确的热图和 geom_point