如何访问禁用的输入值?

时间:2017-06-04 07:46:02

标签: angular angular-material

我在角度2中创建了一个反应形式,并使用材料角度2来输入;

我需要将输入设置为已禁用,并在提交未锁定输入中的值时将要发送的值。我已经创建了输入并且已禁用正在运行。我的问题是,当我提交一个提交值时,它不会来。

我的代码

this.formVariacao = this._fb.group({

   id:[p && p['id']],
   codigoItem: [p && p['codigoItem'], Validators.required],
});

我的HTML

<md-input-container>
    <input mdInput placeholder="Código da Variação" formControlName="codigoItem" name="codigoItem">
</md-input-container>

我按如下方式阻止输入

this.formVariacao.get('codigoItem').disable();

只有当我发送表格时,价值才会到来。 Alguémpode me ajudar?

2 个答案:

答案 0 :(得分:18)

正如您注意到Angular忽略了表单对象中的禁用表单控件。

可以使用getRawValue()轻松修复此问题,其中包括所有表单控件,是否已禁用。因此,例如在您的提交中,您传递表单(而不是表单值),如下所示:

(ngSubmit)="onSubmit(formVariacao)" 

然后您可以使用getRawValue

onSubmit(form) {
  console.log(form.getRawValue())
}

答案 1 :(得分:1)

来自代码文档:

 /**
     * A control is `disabled` when its `status === DISABLED`.
     *
     * Disabled controls are exempt from validation checks and
     * are not included in the aggregate value of their ancestor
     * controls.
     */

因此,如果您仅使用disable()来使控件具有disabled属性,请不要使用disable(),请使用[attr.disbaled]="yourVariable"

喜欢这个:

<input [attr.disabled]="disabled" mdInput placeholder="Código da Variação" formControlName="codigoItem" name="codigoItem">

然后在你的打字稿中:

而不是

 this.formVariacao.get('codigoItem').disable(); 

这样做:

  private disabled = false;



  this.disabled = true;