【问题标题】:How to hide input with Angular如何使用 Angular 隐藏输入
【发布时间】:2020-06-09 09:33:52
【问题描述】:

我在我的应用程序中使用 USB 读卡器来填写输入表单。我正在尝试隐藏它并能够用我的卡标记以发送表格。

我尝试使用

<input hidden type="text" id="cardNumber" formControlName="cardNumber" [(ngModel)]="refresh">

<input type="hidden" id="cardNumber" formControlName="cardNumber" [(ngModel)]="refresh">

<input type="text" style="display:none" id="cardNumber" formControlName="cardNumber" [(ngModel)]="refresh">

但是一旦元素消失,我就无法用卡片填充它。 我通过使用来确保焦点始终存在

document.getElementById("cardNumber").focus();

我不明白 Angular 如何在 DOM 中处理所有隐藏元素?但看起来我可以到达它但不能使用它。

【问题讨论】:

  • 请同时向我们展示您尝试使用读卡器填充表单的代码
  • ngOnInit() { document.getElementById("cardNumber").focus(); } 这样usb读卡器会自动写入rfid卡的内容并回车

标签: angular hidden-field


【解决方案1】:

你甚至可以使用

class="cdk-visually-hidden"

Documentation

【讨论】:

    【解决方案2】:

    首先,您应该决定是否要隐藏输入并使用纯 js/html 或使用 Angular 功能来获取它,因为您发布的代码行使用的是 vanilla javascript。这样,您应该尝试使用属性visibility: hidden 添加到输入 css 样式。

    要使用 Angular 将其隐藏,您应该使用方括号表示法绑定隐藏属性,如下所示:[hidden]="true"

    您应该通过初始化 Angular Form 并通过 formControlName 查找输入来获取代码中的元素,以下是详细说明如何实现此目的的文档:https://angular.io/api/forms/Form

    如果你只有一个输入并且不想为它初始化整个表单,你可以尝试添加ElementRef,代码是这样的:

    import {ElementRef} from '@angular/core';
    @ViewChild('myInput') inputElement:ElementRef;
    
    ngAfterViewInit() {
          this.inputElement.nativeElement.focus();
    }
    
    <input #myInput [hidden]="true" [(ngModel)]="refresh">
    

    【讨论】:

      【解决方案3】:

      有条件地隐藏字段怎么样?

      &lt;input [hidden]="!isInputShown" type="text" id="cardNumber" formControlName="cardNumber" [(ngModel)]="refresh"&gt;

      在你的 ts 中是这样的:

      hideInput() {
          this.isInputShown = true;
      }
      
      hideInput() {
          this.isInputShown = false;
      }
      
      

      然后只需调用这些方法来隐藏/显示。

      【讨论】:

      • 这行不通,因为我根本不想看到这个字段,但我希望他出现在 DOM 中。如果我们要求 Angular 有条件地删除它,它将无法访问。
      • 好的,那么你需要使用[hidden]属性。这会将元素保留在 DOM 中。请检查我的更新答案。
      猜你喜欢
      • 2023-01-24
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2011-12-06
      • 1970-01-01
      相关资源
      最近更新 更多