我有一个用户可以扫描的输入框(手持式扫描仪)或手动输入(键盘)UPC。如果用户扫描UPC,我想自动调用搜索功能,但如果手动输入,则用户必须点击搜索按钮。 我已经能够找到angularJS和jquery的解决方案但是对于角度2+没什么。有没有像jquery扫描仪检测一样的解决方案?或者有没有人知道在角度2+中实现解决方案的方法,也许是计时器功能。
谢谢。
答案 0 :(得分:0)
使用Angular输入从您可以键入的抽象控制指令继承属性。 https://angular.io/api/forms/AbstractControlDirective
我只需访问onChange函数,检查表单是否为touched
,isDirty
等,以通过编程方式更改输入来查看哪一个未被更改,可能是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;
}
}
}
}
然后,您只需为输入的内容提供一个常规表单字段