在我的Angular应用中,如果FormGroup中的数组具有多个项目,则显示div。
这是我正在使用的代码:
*ngIf="employeeForm.get('skills').length>1
代码按预期工作(仅当数组长度大于1时才显示div)。
但是在VS代码中,上面的代码下出现了一条红线。 这是我得到的错误:
未定义标识符“长度”。 “ AbstractControl”不包含 这样的成员Angular
有人可以告诉我我该怎么做才能删除红线吗?
答案 0 :(得分:2)
之所以会这样,是因为默认情况下,form.get('key')
返回的AbstractControl类型没有length
属性。您需要明确告诉返回的控件是FormGroup,FormControl,FormArray等(代码编辑器会看到此返回类型,并在尝试访问该返回类型中不存在的任何属性时尝试向您发出警告)。
为您准备像这样的吸气剂
get skills() {
return this.emplyeeForm.get('skills') as FormArray
}
您的看法如下:
<div *ngIf="skills.length>1"> ... </div>
这只是为了提高用户的可读性和编辑者的才智。如果返回的控件是FormArray,则在运行时它将具有length属性,并且您的代码将正确运行。
答案 1 :(得分:1)
定义您自己的吸气剂,以便您可以定义它具有和不具有的属性。
public get skills(): any[] // define your type here or keep this.
{
return this.emplyeeForm.controls['skills']. value;
}
*ngIf="skills.length"