我有超过 5 个输入文本字段,仅接受 comm/dot 和 numbers。
[(ngModel)]="company.internetbill"
[(ngModel)]="company.electricitybill"
[(ngModel)]="company.waterbill"
ETC..
我为上述验证编写了一个自定义指令。它工作正常,我的要求是“当用户输入 - 逗号时,它必须更改小数(点)。
commtodecimal(ref:any){
if(ref.includes(",")){
ref=ref.replace(",",".")
this.user.internetbill=ref
}
是否可以在同一自定义指令中更改 ngModel 值。这样我就可以对这两个功能使用相同的指令。
我的自定义指令是——
private regex: RegExp = new RegExp(/^[+-]?\d*[\.\,]?\d{0,8}$/g);
private specialKeys: Array<string> = ['Backspace','ArrowLeft','ArrowRight','Delete'];
constructor(private el:ElementRef) { }
@HostListener('keydown',['$event'])onKeyDown(event:KeyboardEvent){
if (this.specialKeys.indexOf(event.key) !== -1) {
return;
}
const inputValue=this.el.nativeElement.value.concat(event.key)
if(inputValue && !String(inputValue).match(this.regex)){
event.preventDefault();
}
return
}
或者请提出任何优化的方式。这样可以重用代码