angular5 - Angular 5:我们如何使用相同的指令来限制输入字段并在 html 的标签中显示文本
问题描述
我创建了一个指令来仅在输入中接受数字。但我也想根据输入的值在标签中显示一些文本。我可以从指令到组件获取变量吗?
@Directive({
selector: '[OnlyNumber]'
})
export class OnlyNumber {
regexStr = '^[0-9]*$';
//regexStr = ".*[^0-9].*";
constructor(private el: ElementRef) { }
@Input() OnlyNumber: boolean;
@Output() tabText: boolean; //trying to use this for component
@HostListener('keydown', ['$event']) onKeyDown(event) {
let e = <KeyboardEvent>event;
let keyCode = e.keyCode;
if (this.OnlyNumber) {
let ch = String.fromCharCode(keyCode);
let regEx = new RegExp(this.regexStr);
if (regEx.test(ch)){
this.tabText = true; //trying to use this for component
return;
} else {
e.preventDefault();
}
}
}
}
// HTML
<input name="salesprice" type="text" OnlyNumber="true" [(ngModel)]="salesprice" >
如果 tabText 变量设置为 true,我想显示以下标签。请协助。
<label>text entered.</label>
解决方案
对于仅数字字段,您可以使用
<input name="salesprice" type="number" OnlyNumber="true" [(ngModel)]="salesprice" >
并且仅在设置标签时设置标签,tabText
您可以使用
<label *ngIf = "tabText">text entered.</label>
推荐阅读
- haskell - 从haskell中的char和int [([Char], Int)]列表中输出一个字符串列表([String])
- c - 如何将时间输入到结构中?
- html - 仅悬停覆盖图像上的 Bootstrap 4 卡
- django - 如何提高 PDF 文件(Django)的渲染时间?
- javascript - 将提交的表单转换为表单数据对象
- pandas - 如何使用 PIL 从 pandas 数据框中的行值创建图像?
- javascript - 如何减小图片的大小并将其变成视差效果?
- python - 如何将电报频道中的消息保存为变量
- python - 试图从 MySQL 获取数据
- javascript - 以百分比而不是像素设置顶部和左侧