typescript 如何隐藏物料录入

gdrx4gfi  于 2022-12-30  发布在  TypeScript
关注(0)|答案(8)|浏览(166)

通常,如果我希望表单字段包含在提交中但不可见,我会执行<input type="hidden" />
但是,matInput不允许hidden类型,我可以使用display: none;,但这通常会将值排除在提交之外。
有没有办法在提交时也包含值的Material Dynamic表单中隐藏输入?

b91juud3

b91juud31#

我确实测试了它的Angular v11,其中hidden仍然不支持mat-form-field,所以,而不是创建css类或使用type=hidden或如果*ngIf指令是不可能的,如果你不想刷新组件的生命周期。
我只是将[hidden]="variable"更改为〉[class.cdk-visually-hidden]="variable"
感谢@EdWood

hmae6n7t

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;
}
hxzsmxv2

hxzsmxv23#

在Angular 10中,可以将 *ngIf与

vwhgwdsa

vwhgwdsa4#

使用**hidden=“true”**解决此问题

<input  hidden="true"  matInput class="form-control" formControlName="yourfieldname">
r1zk6ea1

r1zk6ea15#

由于隐藏字段不可见,因此它并不重要,您也可以在组件中定义窗体中控件,如下所示

this.yourForm = this.formBuilder.group({
        
        hidden_fld:["your_value",Validators.nullValidator],
        other_field: ['', Validators.required],
      
        });

因此您正在设置hidden_fld默认值,在提交时,该值也将与其他表单变量沿着发送

8wtpewkr

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>
xcitsw88

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>
33qvvth1

33qvvth18#

这里我添加了一个matInput的代码,你可以看到,在第一个mat-form-fieldinput hidden和作品。如果你想显示是不被点击,只需添加disabledinput结束,它将工作。
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

相关问题