Angular 如何将表单输入动态添加到反应式表单
我遵循了本教程: 以了解更多有关反应形式的信息。我已经生成了一个嵌套的表单,就像在视频中一样,并试图创建一个在单击按钮时生成的formarray。但是当我点击我的按钮时,什么也没有发生。也没有错误,但我的输入没有出现。我反复检查了好几次,但是视频和我拥有的是相同的。也许有人能从这里看一下,告诉我我的错误在哪里吗 在typescript中生成表单的代码:Angular 如何将表单输入动态添加到反应式表单,angular,typescript,web-applications,angular-reactive-forms,Angular,Typescript,Web Applications,Angular Reactive Forms,我遵循了本教程: 以了解更多有关反应形式的信息。我已经生成了一个嵌套的表单,就像在视频中一样,并试图创建一个在单击按钮时生成的formarray。但是当我点击我的按钮时,什么也没有发生。也没有错误,但我的输入没有出现。我反复检查了好几次,但是视频和我拥有的是相同的。也许有人能从这里看一下,告诉我我的错误在哪里吗 在typescript中生成表单的代码: ngOnInit() { this.materialAddForm = this.fb.group({ article_
ngOnInit() {
this.materialAddForm = this.fb.group({
article_seller_id: '',
informationNote: '',
buildMaterial_sellers: this.fb.array([
]),
materialCode: '',
materialName: '',
materialType: '',
material_image_url: '',
material_prices: '',
quantity: '',
}
)
}
get sellerForm(){
return this.materialAddForm.get('buildMaterial_sellers') as FormArray
}
addSellerForm(){
const sellerForm = this.fb.group({
name: []
})
this.sellerForm.push(sellerForm)
}
Html只是动态表单部分:
<div class="-pull-right">
<button type="button" (click)="addSellerForm()" class="btn btn-primary mb-2">Add Seller</button>
</div>
<div formArrayName="buildMaterial_sellers">
<div *ngFor="let seller of sellerForm.controls let i=index" [formGroupName]="i">
<div class="input-group input-group-sm col-12 col-md-6 mb-4">
<div class="input-group-prepend">
<span class="input-group-text" id="name">Seller Name</span>
</div>
<input type="text" class="form-control" aria-label="Sizing example input"
aria-describedby="inputGroup-sizing-sm"
formControlName="name" >
</div>
</div>
</div>
添加卖家
卖方名称
您正在将一个空表单组推送到表单数组中。因此,当模板按名称查找控件时,它可以在组中找到属性,但该属性下没有控件可供其访问。您可能希望改为按此按钮:{name:this.fb.control()}
。确保只在数组中推送所需的实际ReactiveForm类型。当前,您的模式将向表单数组中添加表单组,而不是表单控件。这是一个有效的模式,但它可能不是您想要的。这是否回答了您的问题?对不起,我不太理解这里的解决方案,它似乎比视频中的解决方案更复杂。如果你的目标是了解更多关于动态反应形式的信息。。。复制该解决方案,并理解它,将为您提供使用动态反应表单所需的所有信息。我知道答案是您的。哈哈,您可以向我解释一下它如何使用buildForm方法吗?这和我想要的有点不同,你们有一个fix数据变量,它是3。我想要的是通过单击按钮生成它,这是否意味着我尝试将它更改为一个数字,但它不起作用,或者我必须忽略数据,但我将遍历哪个数组?您是正确的,这是您想要查看的正确方法。唯一的区别是,该方法在对象数组上循环,以构造推送
。。。push
中的语法是按钮功能所需的语法。