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">
添加回答
舉報