通常,如果我希望表单字段包含在提交中但不可见,我会执行<input type="hidden" />但是,matInput不允许hidden类型,我可以使用display: none;,但这通常会将值排除在提交之外。有没有办法在提交时也包含值的Material Dynamic表单中隐藏输入?
<input type="hidden" />
matInput
hidden
display: none;
b91juud31#
我确实测试了它的Angular v11,其中hidden仍然不支持mat-form-field,所以,而不是创建css类或使用type=hidden或如果*ngIf指令是不可能的,如果你不想刷新组件的生命周期。我只是将[hidden]="variable"更改为〉[class.cdk-visually-hidden]="variable"。感谢@EdWood
mat-form-field
type=hidden
*ngIf
[hidden]="variable"
[class.cdk-visually-hidden]="variable"
hmae6n7t2#
如前所述,type=“hidden”不适用于matInput。如果您打开浏览器控制台,您会看到“ERROR Error:matInput不支持输入类型“hidden”。如果您尝试使用type=“hidden”提交表单,表单将被损坏,只显示部分表单值。解决此问题的简单方法是在mat-form-field标签上使用CSS类:
<mat-form-field class="invisible example-full-width"> <input matInput placeholder="Favorite food" value="Sushi" ngModel name="fish"> </mat-form-field>
CSS代码段:
.invisible{ display: block; visibility: hidden; height: 0; width: 0; }
hxzsmxv23#
在Angular 10中,可以将 *ngIf与
vwhgwdsa4#
使用**hidden=“true”**解决此问题
<input hidden="true" matInput class="form-control" formControlName="yourfieldname">
r1zk6ea15#
由于隐藏字段不可见,因此它并不重要,您也可以在组件中定义窗体中控件,如下所示
this.yourForm = this.formBuilder.group({ hidden_fld:["your_value",Validators.nullValidator], other_field: ['', Validators.required], });
因此您正在设置hidden_fld默认值,在提交时,该值也将与其他表单变量沿着发送
8wtpewkr6#
编辑:此解决方案适用于Angular 7。您可以简单地使用hidden指令。
<mat-form-field [hidden]="!(formX.value.otherControl == '1')"> <input matInput type="number" placeholder="An Input" formControlName="aControl"> </mat-form-field>
在我的例子中,我在表单中使用了一个名为formX(formX.value.otherControl)的值,但在您的情况下,您可以使用true。
<mat-form-field [hidden]="true"> <input matInput type="number" placeholder="An Input" formControlName="aControl"> </mat-form-field>
xcitsw887#
如果你还没有找到答案。下面是我如何成功地给出你想做的事情。因为我想隐藏某些输入,我只是没有包括在一个和表单成功提交使用action='' post='',和type='submit'按钮。例如:
<form action='/path' method='post'> <mat-form-field class="form-element"> <label for="item"> <input matInput placeholder="My Item" [value]="paymentDetail._amount" name="item" id="item"> </label> </mat-form-field> <input name="anotherItem" id="anotherItem" type="hidden" [value]="model._itemDescription" > </form>
33qvvth18#
这里我添加了一个matInput的代码,你可以看到,在第一个mat-form-field是input hidden和作品。如果你想显示是不被点击,只需添加disabled在input结束,它将工作。HTML
input hidden
disabled
input
HTML
<form class="example-form"> <mat-form-field class="example-full-width"> <input matInput placeholder="Favorite food" value="Sushi" type="hidden"> </mat-form-field> <mat-form-field class="example-full-width"> <textarea matInput placeholder="Leave a comment"></textarea> </mat-form-field> </form>
https://stackblitz.com/edit/angular-g9jxjd-huz6me?file=app/input-overview-example.html
8条答案
按热度按时间b91juud31#
我确实测试了它的Angular v11,其中
hidden
仍然不支持mat-form-field
,所以,而不是创建css类或使用type=hidden
或如果*ngIf
指令是不可能的,如果你不想刷新组件的生命周期。我只是将
[hidden]="variable"
更改为〉[class.cdk-visually-hidden]="variable"
。感谢@EdWood
hmae6n7t2#
如前所述,type=“hidden”不适用于matInput。如果您打开浏览器控制台,您会看到“ERROR Error:matInput不支持输入类型“hidden”。如果您尝试使用type=“hidden”提交表单,表单将被损坏,只显示部分表单值。解决此问题的简单方法是在mat-form-field标签上使用CSS类:
CSS代码段:
hxzsmxv23#
在Angular 10中,可以将 *ngIf与
vwhgwdsa4#
使用**hidden=“true”**解决此问题
r1zk6ea15#
由于隐藏字段不可见,因此它并不重要,您也可以在组件中定义窗体中控件,如下所示
因此您正在设置hidden_fld默认值,在提交时,该值也将与其他表单变量沿着发送
8wtpewkr6#
编辑:此解决方案适用于Angular 7。
您可以简单地使用hidden指令。
在我的例子中,我在表单中使用了一个名为formX(formX.value.otherControl)的值,但在您的情况下,您可以使用true。
xcitsw887#
如果你还没有找到答案。下面是我如何成功地给出你想做的事情。因为我想隐藏某些输入,我只是没有包括在一个和表单成功提交使用action='' post='',和type='submit'按钮。例如:
33qvvth18#
这里我添加了一个
matInput
的代码,你可以看到,在第一个mat-form-field
是input hidden
和作品。如果你想显示是不被点击,只需添加disabled
在input
结束,它将工作。HTML
https://stackblitz.com/edit/angular-g9jxjd-huz6me?file=app/input-overview-example.html