Angular 14 类型表单 - 数字控件的初始值

Mił*_*ski 11 angular angular-reactive-forms angular-forms angular14

键入的表单很棒,但我想知道如何最初显示带有“数字”类型作为空输入字段的表单控件。我想将我的控件保持为非空,因为它们在我的表单中是必需的,但它排除使用 null 作为初始值,这是之前的解决方案。

编辑:也许我描述了我的情况。我有几个数字类型的 FormControl。我想最初将这些输入显示为空。因此,可能的解决方案是将 FormControl 构造函数中的初始值设置为 null。但 FormControl 的类型为 <number | 空>。所有这些都是必需的。提交后,我需要将该数据发送到服务器并分配 FormControl<number | null> value 为number类型的属性,这使得我为每个属性添加显式转换,即使我知道提交后由于“必需”验证器它们不能为空。我的 FormControl< string > 转换是不必要的,我可以通过提供“”作为初始值来显示空输入。我想知道是否有一些解决方法可以用数字来做到这一点。

小智 6

所需的验证器不会禁止输入具有空值。它只是将错误添加到FormControl,但该值仍然可以为空。因此,拥有<number | null>比 更有意义<number>。当验证通过时,您此时可以使用!(例如form.controls.name.value!)断言该值不为空。但也许您实际上应该有一个<string>类型(并传递空字符串作为初始值),因为 HTML 输入不能有数值?如果将数值传递给<input type="number">,该数字将在底层转换为字符串。当您从表单中检索值时,该值是字符串,而不是数字。