如何从表单组中的禁用表单控件中获取值?

时间:2018-04-05 14:49:58

标签: angular forms angular-reactive-forms

我尝试使用表单状态对象初始化我的新FormControl,然后我注意到这个控件不会影响我的表单验证,它也会从FormGroup值中消失。

this.userForm = new FormGroup({
  email: new FormControl('', Validators.required),
  firstName: new FormControl('',Validators.required),
  lastName: new FormControl('',Validators.required),
  role: new FormControl({value: 'MyValues', disabled: true},Validators.required),
 })

现在,如果我尝试这样做:

this.userForm.value //email, firstName, lastName

有人遇到过此问题吗?有解决方案吗 角度版本:5.2.6

4 个答案:

答案 0 :(得分:25)

这不是问题,是预期的行为。如果您想要包括所有值而不管禁用状态如何,请使用以下命令:

this.userForm.getRawValue()

答案 1 :(得分:2)

@jota-toledo谢谢您为我提供了80%的所需资源。

对于那些正在寻找相同问题的解决方案但对于嵌套表格的人,我可以通过更改常规方法来解决

this.userForm.get('nestedForm').value

this.userForm.getRawValue().nestedForm

答案 2 :(得分:2)

如果有人正在寻找解决方案以在 FormGroup 中获得 FormArray 的已禁用 FormControl

尝试一下- (this.formName.controls['formArrayName'] as FormGroup).getRawValue();

答案 3 :(得分:0)

在我的情况下,我仅需要1个禁用输入的值,因此,在那种情况下,我已经更改了单个输入并在其中添加了readonly属性,并在this.userForm.value中获得了值

HTML:

<input formControlName="name" [readonly]="anyBoolean">