扫描仪检测角度为2+

时间:2018-06-13 22:02:24

标签: jquery angular barcode-scanner

我有一个用户可以扫描的输入框(手持式扫描仪)或手动输入(键盘)UPC。如果用户扫描UPC,我想自动调用搜索功能,但如果手动输入,则用户必须点击搜索按钮。 我已经能够找到angularJS和jquery的解决方案但是对于角度2+没什么。有没有像jquery扫描仪检测一样的解决方案?或者有没有人知道在角度2+中实现解决方案的方法,也许是计时器功能。

谢谢。

2 个答案:

答案 0 :(得分:0)

使用Angular输入从您可以键入的抽象控制指令继承属性。 https://angular.io/api/forms/AbstractControlDirective

我只需访问onChange函数,检查表单是否为touchedisDirty等,以通过编程方式更改输入来查看哪一个未被更改,可能是touched。如果您touched为false,且值onChange与初始值不同,则可以提交搜索。只有在没有您手动输入数据的情况下更改表单的值时才会触发,这会使touched成立。

让我知道它是否有帮助!

答案 1 :(得分:0)

您可以改为使用@HostListener收听条形码输入。我做了一个指令,我将其应用于希望扫描仪工作的页面

import { Directive, HostListener } from '@angular/core';

@Directive({selector: '[appScanner]'})

export class ScannerDirective {
  combinedCode = null

  @HostListener('document:keypress', ['$event'])
  keyEvent(event: KeyboardEvent) {
    if (event.key === 'Enter') {
      console.log(this.combinedCode);
    } else {
      if (this.combinedCode === null) {
        this.combinedCode = event.key;
      } else {
        this.combinedCode = this.combinedCode + event.key;
      }
    }
  } 
}

然后,您只需为输入的内容提供一个常规表单字段