【发布时间】:2018-04-09 13:15:56
【问题描述】:
我创建了一个指令来限制input 字段type=number 的长度。
// 输入
<input min="1" appLimitTo [limit]="5" type="number" name="property" [(ngModel)]="property">
// 指令
import {Directive, HostListener, Input} from '@angular/core';
@Directive({
selector: '[appLimitTo]',
})
export class LimitToDirective {
@Input() limit: number;
@Input() ngModel: any;
@HostListener('input', ['$event'])
onInput(e) {
if (e.target.value.length >= +this.limit) {
e.target.value = (e.target.value).toString().slice(0, this.limit - 1);
e.preventDefault();
}
}
}
如果我们通过键盘输入值,它就可以正常工作。但是,如果我复制并粘贴 12345678913465789 这个数字,这一行 e.target.value = (e.target.value).toString().slice(0, this.limit - 1); 将其缩短到极限,但 ngModel 仍然包含 12345678913465789 值,就会出现问题。如何更新这个 ngModel 值?
请帮忙。
PS - 我应该在指令中添加什么以满足要求?
【问题讨论】:
-
Angular 指令@output
标签: angular input dom-events angular2-directives