如何访问禁用的输入值?

问题描述 投票:6回答:2

我正在角度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?

angular angular-material
2个回答
18
投票

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

这可以通过使用getRawValue()轻松解决,(ngSubmit)="onSubmit(formVariacao)" 包括所有表单控件,禁用或不禁用。例如,在您的提交中,您传递表单(而不是表单值),如下所示:

getRawValue

然后你可以使用onSubmit(form) { console.log(form.getRawValue()) }

 /**
     * 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.
     */

1
投票

从代码文档:

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;

做这个 :

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.