在 angular 中以反应形式添加控件数组
Adding an array of control in a reactive form in angular
this.reactiveForm = this.formBuilder.group({
EventType: new FormControl({value: this.EventTypes[0].Name}, [Validators.required]),
StoreName: new FormControl('')
});
我想要多个StoreName
作为formControl的数组。我是 angular 的新手。谁能指导我?
使用类似下面的代码
StoreName: this.formBuilder.array([])
如果您在上面代码中提供的空数组中有初始值,您可以在其中传递初始值。我希望 this.formBuilder 的类型是 FormBuilder
FormArray 是 FormGroup 的替代品,用于管理任意数量的未命名控件。与表单组实例一样,您可以从表单数组实例中动态插入和移除控件,并且表单数组实例值和验证状态是从其子控件中计算出来的。但是,您不需要按名称为每个控件定义一个键,因此如果您事先不知道子值的数量,这是一个很好的选择。
您可以通过在数组中定义控件来初始化具有任意数量的控件(从零到很多)的表单数组。添加别名 属性 到您的表单的表单组实例以定义表单数组。
使用 FormBuilder.array() 方法定义数组,使用 FormBuilder.control() 方法用初始控件填充数组。
示例:
import { FormArray } from '@angular/forms';
profileForm = this.fb.group({
firstName: ['', Validators.required],
lastName: [''],
address: this.fb.group({
street: [''],
city: [''],
state: [''],
zip: ['']
}),
aliases: this.fb.array([
this.fb.control('')
])
});
与重复 profileForm.get() 方法获取每个实例相比,A getter 提供了对表单数组实例中别名的轻松访问。表单数组实例表示数组中未定义数量的控件。通过 getter 访问控件很方便,而且这种方法很容易重复用于其他控件。
get aliases() {
return this.profileForm.get('aliases') as FormArray;
}
要附加表单模型中的别名,您必须将其添加到模板中。与 FormGroupNameDirective 提供的 formGroupName 输入类似,formArrayName 将表单数组实例的通信绑定到具有 FormArrayNameDirective 的模板。
<div formArrayName="aliases">
<h3>Aliases</h3> <button (click)="addAlias()">Add Alias</button>
<div *ngFor="let address of aliases.controls; let i=index">
<!-- The repeated alias template -->
<label>
Alias:
<input type="text" [formControlName]="i">
</label>
</div>
</div>
this.reactiveForm = this.formBuilder.group({
EventType: new FormControl({value: this.EventTypes[0].Name}, [Validators.required]),
StoreName: new FormControl('')
});
我想要多个StoreName
作为formControl的数组。我是 angular 的新手。谁能指导我?
使用类似下面的代码
StoreName: this.formBuilder.array([])
如果您在上面代码中提供的空数组中有初始值,您可以在其中传递初始值。我希望 this.formBuilder 的类型是 FormBuilder
FormArray 是 FormGroup 的替代品,用于管理任意数量的未命名控件。与表单组实例一样,您可以从表单数组实例中动态插入和移除控件,并且表单数组实例值和验证状态是从其子控件中计算出来的。但是,您不需要按名称为每个控件定义一个键,因此如果您事先不知道子值的数量,这是一个很好的选择。
您可以通过在数组中定义控件来初始化具有任意数量的控件(从零到很多)的表单数组。添加别名 属性 到您的表单的表单组实例以定义表单数组。
使用 FormBuilder.array() 方法定义数组,使用 FormBuilder.control() 方法用初始控件填充数组。
示例:
import { FormArray } from '@angular/forms';
profileForm = this.fb.group({
firstName: ['', Validators.required],
lastName: [''],
address: this.fb.group({
street: [''],
city: [''],
state: [''],
zip: ['']
}),
aliases: this.fb.array([
this.fb.control('')
])
});
与重复 profileForm.get() 方法获取每个实例相比,
A getter 提供了对表单数组实例中别名的轻松访问。表单数组实例表示数组中未定义数量的控件。通过 getter 访问控件很方便,而且这种方法很容易重复用于其他控件。
get aliases() {
return this.profileForm.get('aliases') as FormArray;
}
要附加表单模型中的别名,您必须将其添加到模板中。与 FormGroupNameDirective 提供的 formGroupName 输入类似,formArrayName 将表单数组实例的通信绑定到具有 FormArrayNameDirective 的模板。
<div formArrayName="aliases">
<h3>Aliases</h3> <button (click)="addAlias()">Add Alias</button>
<div *ngFor="let address of aliases.controls; let i=index">
<!-- The repeated alias template -->
<label>
Alias:
<input type="text" [formControlName]="i">
</label>
</div>
</div>