如何解决Angular FormArray-无法读取null的属性“ push”
我正在与Angular Reactive FormArray一起在添加按钮上添加多个输入。
我的设置中有多个formGroup。尝试添加/推送输入时,出现“无法读取null的属性'push'”错误。
formGroup设置是否有问题,或者是由于formArray中有多个FormGroups
我的代码:HTML
<form [formGroup]="form">
<input type="checkBox" formControlName="published"> Published
<div *ngIf="form.controls.published.value">
<h2>Credentials</h2>
<button (click)="addCreds()">Add</button>
<div formArrayName="credentials" *ngFor="let creds of form.controls.credentials?.value; let i = index">
<ng-container [formGroupName]="i">
<input placeholder="Username" formControlName="username">
<input placeholder="Password" formControlName="password">
</ng-container>
</div>
</div>
</form>
角度代码:
form: FormGroup;
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
published: true,formArray: this.fb.array([
this.fb.group({
credentials: this.fb.array([]),})
])
});
}
addCreds() {
const creds = this.form.get('credentials') as FormArray;
creds.push(this.fb.group({
username: '',password: '',}));
}
我也有https://stackblitz.com/edit/angular-form-array-example-hfmrm2
解决方法
由于嵌套了formArray,因此必须按如下所示更改模板。
component.html
<ng-container
formArrayName="formArray"
*ngFor="let forArr of form.get('formArray').controls; let x = index"
>
<ng-container [formGroupName]="x">
<div
formArrayName="credentials"
*ngFor="
let creds of forArr.controls.credentials?.controls;
let i = index
"
>
<ng-container [formGroupName]="i">
<input placeholder="Username" formControlName="username" />
<input placeholder="Password" formControlName="password" />
</ng-container>
</div>
</ng-container>
</ng-container>
component.ts
addCreds() {
const formArray = this.form.get("formArray") as FormArray;
(formArray.controls[0].get("credentials") as FormArray).push(
this.fb.group({
username: "",password: ""
})
);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。