首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >角反应形式- FormGroupName在FormGroupName内

角反应形式- FormGroupName在FormGroupName内
EN

Stack Overflow用户
提问于 2018-05-13 20:21:07
回答 1查看 21.8K关注 0票数 6

我有一个从API返回的嵌套JSON响应,它的结构与在模板上显示它的方式不同,例如:

代码语言:javascript
代码运行次数:0
运行
复制
@Component({
  selector: 'reactive-form-example',
  styles: ['./reactive-form-example.component.css'],
  template: `
    <form [formGroup]="form" (ngSubmit)="onSubmit()">
        <div formGroupName="first">
            <input type="text" placeholder="some id" formControlName="someId">
            <div formGroupName="second">
                <input type="text" placeholder="some text" formControlName="someText">
            </div>
        </div>
    </form>
  `
})
export class ReactiveFormExampleComponent {
    form = new FormGroup({
        first: new FormGroup({
            someId: new FormControl('587824')
        }),
        second: new FormGroup({
            someText: new FormControl('the sky is blue')
        })
    });
    onSubmit(value) {
        console.log('Submit', this.form.value);
    }
}

问题:是否有可能在另一个formGroupName中嵌套formGroupName,或者是否有更好的方法使用反应性表单来实现相同的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-13 21:19:53

是。formGroupName可以嵌套在另一个formGroupName中。

formGroupNameformControlName属性通过在父FormGroup中找到具有该特定名称的控件来工作。

请注意,您的问题是由于您试图在FormGroup FormGroup中找到名为secondfirst而引起的:

代码语言:javascript
代码运行次数:0
运行
复制
<form [formGroup]="form">
    <div formGroupName="first">
        <div formGroupName="second">
        </div>
    </div>
</form>

要做到这一点,您必须按照以下方式调整您的模型,其中second成为first的子代

代码语言:javascript
代码运行次数:0
运行
复制
form = new FormGroup({
    first: new FormGroup({
        someId: new FormControl('587824'),
        second: new FormGroup({
            someText: new FormControl('the sky is blue')
        })
    }),        
});

emostafa的建议之所以有效,是因为您要求form实例在模型中获得一个名为second的直接子级。在这种情况下是存在的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50320307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档