小编典典

Angular 2 禁用控件不包含在 form.value 中

all

我注意到,如果我禁用 Angular 2 响应式表单上的控件,则该控件不会包含在 form.value 中。例如,如果我如下定义我的表单:

this.notelinkingForm = new FormGroup({
    Enabled: new FormControl(settings.Enabled, Validators.required),
    LinkToPreceeding: new FormControl({value: settings.LinkToPreceeding, disabled: !settings.Enabled}, Validators.required),
    LinkingTolerance: new FormControl({value: settings.LinkingTolerance, disabled: !settings.Enabled}, Validators.required)
});

并检查 this.notelinkingForm.value,如果启用了所有控件,则输出将是:

{"Enabled":true, "LinkToPreceeding": true, LinkingTolerance:"100"}

但是,当某些控件被禁用时,它将是:

{"Enabled":true}

请注意如何排除禁用的控件。

我的意图是,当表单发生更改时,我希望能够将 form.value 及其中的所有属性传递给我的其余 API。如果它不包含禁用的项目,这显然是不可能的。

我在这里遗漏了什么还是这是预期的行为?有没有办法告诉 Angular 在 form.value 中包含禁用的项目?

欢迎你的想法。


阅读 214

收藏
2022-08-24

共1个答案

小编典典

您可以使用:

this.notelinkingForm.getRawValue()

来自Angular 文档

如果您想包含所有值而不考虑禁用状态,请使用此方法。否则,value属性是获得组值的最佳方式。

2022-08-24