我在角度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?
答案 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;