angular - 如何修复 VS Code 中出现的“未定义标识符‘长度’”错误,但代码按预期工作
问题描述
在我的 Angular 应用程序中,如果我的 FormGroup 中的数组有超过 1 个项目,我将显示一个 div。
这是我正在使用的代码:
*ngIf="employeeForm.get('skills').length>1
代码按预期工作(仅当数组长度大于 1 时才会显示 div)。
但是在 VS Code 中,我在上面的代码下得到了一条红线。这是我得到的错误:
未定义标识符“长度”。“AbstractControl”不包含这样的成员Angular
有人可以告诉我我需要做什么才能删除这条红线吗?
解决方案
发生这种情况是因为默认情况下 aform.get('key')
返回一个 AbstractControl 类型,它没有length
属性。您需要明确告知返回的控件是 FormGroup、FormControl、FormArray 等(代码编辑器会看到此返回类型,并在您尝试访问返回类型中不存在的任何属性时尝试向您发出警告)。
对你来说,做一个像这样的吸气剂:
get skills() {
return this.emplyeeForm.get('skills') as FormArray
}
你的观点就像:
<div *ngIf="skills.length>1"> ... </div>
这只是为了用户的可读性和编辑的智能。如果返回的控件是 FormArray,那么在运行时它将有一个长度属性,并且您的代码将运行而不会出错。
推荐阅读
- kubernetes - How to debug crash-looping pods in OpenShift?
- tfs - Azure devops server - use custom condition to build a csproj if it exists (or ignore if it doesn't) to get rid of "partial success"
- python - 'NoneType' 没有属性 'lower' - 清理文本时出错
- c - gcc behavior when compiling a c recursive function with const parameters
- python - 无法使用 python 运行 oracle 数据库有人可以帮助我吗?
- docker - How to install Access Runtime on a Docker container?
- java - Problems using extended ascii characters as parameters in linux CL
- reactjs - React input when focus
- iis - DNN IIS 服务的性能问题
- javascript - 如何通过单击按钮来伪造 Material-ui TextField 的焦点?