首页 > 解决方案 > 如何修复 VS Code 中出现的“未定义标识符‘长度’”错误,但代码按预期工作

问题描述

在我的 Angular 应用程序中,如果我的 FormGroup 中的数组有超过 1 个项目,我将显示一个 div。

这是我正在使用的代码:

*ngIf="employeeForm.get('skills').length>1

代码按预期工作(仅当数组长度大于 1 时才会显示 div)。

但是在 VS Code 中,我在上面的代码下得到了一条红线。这是我得到的错误:

未定义标识符“长度”。“AbstractControl”不包含这样的成员Angular

有人可以告诉我我需要做什么才能删除这条红线吗?

标签: 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,那么在运行时它将有一个长度属性,并且您的代码将运行而不会出错。


推荐阅读