从html模板调用addAdd()时出错。
this.personalForm = this.fb.group({
user: this.fb.group({
address: this.fb.array([this.addRows()])
}),
addRows() {
return this.fb.group({
country: ['']});
addAdd() {
const control:FormArray = this.personalForm.get[`address`] as FormArray;
control.push(this.addRows());
}
我在哪里做错了
ERROR TypeError: Cannot read property 'push' of undefined
html代码
<button (click)="addAdd()">Add Address</button>
<div formArrayName="address">
<div *ngFor="let add of personalForm.controls?.address?.controls; let i=index" [formGroupName]="i">
<label>Country</label>
<input type="text" class="form-control" formControlName="country"
placeholder="Country" />
</div>
</div>
答案 0 :(得分:1)
在这种情况下,控制可能为null,请添加对null和length的检查。
const control:FormArray = this.personalForm.get[`address`] as FormArray;
if(control && control.length >0){
control.push(this.addRows());
}
答案 1 :(得分:1)
get是一个函数,而不是一个对象。此外,您必须指定控件的完整路径。
const control:FormArray = this.personalForm.get(['user', 'address']) as FormArray;
或
const control:FormArray = this.personalForm.get('user.address') as FormArray;
答案 2 :(得分:0)
Thanks Marko ! this is working, cool !
addAdd() {
const control:FormArray = this.personalForm.get('user.address') as FormArray;
control.push(this.addRows());
}