3 回答
TA贡献1830条经验 获得超3个赞
发生这种情况是因为您没有设置上层 formGroup,personalDetails因此 reyLanguages在registrationForm控件中查找带有名称的控件,其中Languages控件是personalDetails表单组中的控件,另一件与您有拼写错误相关的内容LanguagesForm.controls必须是“Languages.controls”
<div class="form-group">
<label>Language(s) : </label>
<button type="button" class="btn btn-secondary btn-sm m-2" (click)="addLanguage()">Add Language</button>
<div [formGroup]="registrationForm"> <!-- 👈 -->
<div [formGroupName]="'personalDetails'"> <!-- 👈 -->
<div formArrayName="Languages">
<div *ngFor="let lag of registrationForm.get('personalDetails').get('Languages').controls; let i =index;">
<input type="text" class="form-control" [formControlName]="i">
</div>
</div>
</div>
</div>
</div>
您可以使用 get 属性来访问这样的语言表单
langsform() :FormArray {
return this.registrationForm.get('personalDetails').get('Languages') as FormArray
}
模板
<div [formGroup]="registrationForm">
<div [formGroupName]="'personalDetails'">
<div formArrayName="Languages">
<div *ngFor="let lang of langsform.controls; let i =index;">
<input type="text" class="form-control" [formControlName]="i">
</div>
</div>
</div>
</div>
TA贡献1833条经验 获得超4个赞
我认为问题是你在 onInit 中初始化了 registrationForm 对象,此时模板已经被解析,所以你应该*ngIf="this.registrationForm"
在这个 div 上添加一个<div formArrayName="Languages">
添加回答
举报