引用:https : //angular.io/docs/ts/latest/api/forms/index/FormArrayName-directive.html ://angular.io/docs/ts/latest/api/forms/index/FormArrayName-directive.html,很容易获得FormArrayName:
HTML:
<form [formGroup]="form" (ngSubmit)="onSubmit()">
<div formArrayName="cities">
<div *ngFor="let city of cities.controls; index as i">
<input [formControlName]="i" placeholder="City">
</div>
</div>
<button>Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
TS:
form = new FormGroup({
cities: new FormArray([
new FormControl('SF'),
new FormControl('NY'),
]),
});
get cities(): FormArray { return this.form.get('cities') as FormArray; }
// This does the magic!
Run Code Online (Sandbox Code Playgroud)
DOM <div formArrayName="cities">
使用吸气剂
get cities(): FormArray { return this.form.get('cities') as FormArray; }
,一切都像魅力一样工作
当FormArray嵌套在另一个FormArray中时,如何进行吸气剂处理?
假设这个例子:
TS:
form = new FormGroup({
cities: new FormArray([
new …Run Code Online (Sandbox Code Playgroud) 我试图FormArray在另一个内部添加,FormArray但无法弄清楚如何做到这一点.
我在我的打字稿文件中有这个:
createForm() {
this.myForm = this.formBuilder.group({
people: this.formBuilder.array([
{ addresses: this.formBuilder.array([]) }
])
});
}
Run Code Online (Sandbox Code Playgroud)
基本上,我试图说一个人FormArray,每个人可以有多个地址.我尝试在我的html中渲染它:
<div [formGroup]="myForm">
<div formArrayName="people">
<div *ngFor="let person of people.controls; let i=index">
Person {{ i + 1 }}
<div *ngFor="let address of person.addresses.controls; let j=index">
Address {{ j + 1 }}
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
当然,这只是一个例子,我的实际形式会有更多的进展.我有一个"添加人"链接,它调用我的打字稿中的一个函数,将一个对象推送给人FormArray.
当我打电话时createForm(),我在浏览器中收到以下错误:
ERROR TypeError: this.form._updateTreeValidity is not a function
ERROR TypeError: this.form.get is not a function
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我如何完成我想做的事情?任何帮助,将不胜感激!