我想在Angular2中創建一個自定義指令,所以它只接受數字/^\d+$/
。到目前爲止,我已經創建了一個指令,它實現了我所需要的。但是......輸入接受數字只有自定義指令
問題:
當我嘗試了
<input>
標籤內鍵入的字符出現第二個,然後消失。
[(ngModel)]
這是綁定到元素,更新打字容易(同時鍵入一個數字),但是當一個字符輸入「a ||」 b || c等等,它會被存儲在ngModel
中,並在輸入數字時得到更新。通過這種方式,我不能通過箭頭鍵瀏覽
<input>
個字符,因爲它必然會與keyup
綁定。
組件:
export class AppComponent {
myValue = 123;
}
HTML:
<input type="text" name="color" [(ngModel)]="myValue" numbers-only/> <br>
{{myValue}}
指令:
@Directive({
selector: '[numbers-only]',
host: {
'(keyup)' : 'onInputChange()'
}
})
export class UpperCaseDirective {
private oldVal = '';
@Input() ngModel: any;
constructor(private el: ElementRef) { }
ngOnInit() {
this.oldVal = this.ngModel || '';
}
onInputChange() {
console.log(this.ngModel, !isNaN(this.ngModel));
var reg = /^\d+$/;
if (reg.test(this.ngModel)) {
this.el.nativeElement.value = this.ngModel;
this.oldVal = this.ngModel;
} else {
this.el.nativeElement.value = this.oldVal;
}
}
}
即將形成一個Angular1背景,我發現很難爲一個簡單的數字編寫這麼多的代碼只有<input>
,ng-pattern
會在那裏做伎倆。
請提出一個方法來實現這個或其他更好的解決方案也是受歡迎的。
使用appUpperCase而不是使用大寫。 – Manish
@ user32我的不好,在我的code..typo這裏用作'大寫'..現在改變它。 – yashhy