是否有一种使用强类型表单的简洁方法?

问题描述 投票:0回答:0

如果我有一个表格:

const form = new FormGroup({
  foo: new FormControl(''),
});

我想动态地添加一个控件,比如:

form.addControl('bar', new FormControl(''));

我收到一个错误,似乎回到了

bar
not being defined in
form
。该错误建议将其添加为可选属性。 文档还说:

在强类型组中,控件必须属于该组的类型(可能作为可选键)。

看来我可以通过两种方式添加它:

  1. FormGroup
    的泛型参数中显式指定完整的Form模型,包含可选的
    bar
    属性。我不想这样做,因为实际上它是一个大而复杂的对象。
const form = new FormGroup<{ foo: string, bar?: string }>({
  ...
});
  1. 声明
    bar
    作为
    FormGroup
    对象参数中的可选属性,但看起来我需要用它声明关联的
    FormControl
    值,这意味着它已经在表单中(我想在没有它的情况下开始)
const form = new FormGroup({
  foo: new FormControl(''),
  bar?: new FormControl('')
});

我需要添加一个我实际上想动态添加的

FormControl
似乎很矛盾

有更好的方法吗?

Stackblitz:https://stackblitz.com/edit/angular-xsu9at?file=src%2Fadd-control.ts

angular angular-forms
© www.soinside.com 2019 - 2024. All rights reserved.