gpt4 book ai didi

angular - react 形式 : How to add new FormGroup or FormArray into an existing FormGroup at a later point in time in Angular till v14

转载 作者:太空狗 更新时间:2023-10-29 17:51:00 28 4
gpt4 key购买 nike

在 StackOverflow 的其他示例中,有很多关于在 FormArrays 中使用 FormGroups 的问题。但我的问题恰恰相反。

FormArrays 有一个 push 方法,这使得很多事情成为可能。 FormGroups 确实有一个 addControl 方法来添加简单的 FormControls。 AFAIK FormGroups 没有 addFormArrayaddFormGroup 方法。因此我需要你的帮助。

以下情况:

this.myForm = this.fb.group({
id: this.fb.control([this.book.id]),
// or short form `id: [this.book.id],`
});

稍后添加一个简单的控件很容易:

this.myForm.addControl('isbn', this.fb.control(this.book.isbn));

但是如何将 FormArrays 和 FormGroups 添加到现有的 FormGroup 中呢?例如,我想为此目的使用以下数组和对象:

const authors  = ['George Michael', 'Aretha Franklin'];
const metaData = { description : 'Great Book', publication: 2019}

我想添加 authorsArraymetaData 只有在它们存在的情况下。这就是为什么我想稍后添加它们的原因。

附注请忽略验证规则。

最佳答案

FormGroup addControl方法接受 AbstractControl 作为参数,参数可以是 FormControlFormArray 或另一个 FormGroup 因为它们都扩展 抽象控件

class FormGroup extends AbstractControl {}

class FormControl extends AbstractControl {}

class FormArray extends AbstractControl {}

FormBuilder可以帮助您使用 array()group() 方法构建此类控件:

this.myForm = this.fb.group({
id: this.fb.control([this.book.id]),
authors: this.fb.array(['George Michael', 'Aretha Franklin']),
metaData: this.fb.group({ description : 'Great Book', publication: 2019})
});

之后您仍然可以使用工厂来构建您需要的控件(无论它是哪种控件):

this.myForm.addControl('authors',
this.fb.array(['George Michael', 'Aretha Franklin']))
this.myForm.addControl('metaData',
this.fb.group({description: 'Great Book', publication: 2019}))

关于angular - react 形式 : How to add new FormGroup or FormArray into an existing FormGroup at a later point in time in Angular till v14,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55334283/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com