JR *_* S. 5 angular2-directives
请帮忙.我在创建一个总是将文本输入设置为大写的指令时遇到了麻烦.它似乎正在查看用户界面,但模型绑定显示仍为小写字符的最后一个类型字符.
下面是我的html的一部分:
<div>
<md-input-container fxFlex>
<textarea #listCode mdInput [(ngModel)]="listInfo.code" placeholder="List Code"
uppercase-code maxlength="50" rows="3"
required></textarea>
<md-hint align="end">{{listCode.value.length}} / 50</md-hint>
</md-input-container>
{{listInfo.code}}
</div>
Run Code Online (Sandbox Code Playgroud)
以下是指令:
import { Directive } from '@angular/core';
import { NgControl } from '@angular/forms';
@Directive({
selector: '[ngModel][uppercase-code]',
host: {
'(ngModelChange)': 'ngOnChanges($event)'
}
})
export class UppercaseCodeDirective {
constructor(public model: NgControl) {}
ngOnChanges(event) {
var newVal = event.replace(/[^A-Za-z0-9_]*/g, '');
newVal = newVal.toUpperCase();
this.model.valueAccessor.writeValue(newVal);
}
}
Run Code Online (Sandbox Code Playgroud)
您应该使用如下指令,
@HostListener('keyup') onKeyUp() {
this.el.nativeElement.value = this.el.nativeElement.value.toUpperCase();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7439 次 |
| 最近记录: |