我注意到,如果我禁用 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 中包含禁用的项目?
欢迎你的想法。
您可以使用:
this.notelinkingForm.getRawValue()
来自Angular 文档:
如果您想包含所有值而不考虑禁用状态,请使用此方法。否则,value属性是获得组值的最佳方式。
value