【发布时间】:2017-06-13 02:03:18
【问题描述】:
我试图模仿密码的作用,无论用户键入什么,它都被••••••• 代替,除了我想对数字执行此操作并且只显示最后四个数字。到目前为止,我的@Directive 中有捕获击键的事件,但实际上并没有在流中(在输入中)发出或传播任何更改来更改值。
例如。 #####1234
<input id="indTaxId" type="text" name="indTaxId"
[(ngModel)]="payLoadService.individual.taxId"
required maxlength="9" pattern="^[0-9]{9}$"
[lastFourDirective]="payLoadService.individual.taxId"
(lastFourDirectiveOutput)="payLoadService.individual.taxId"
/>
last-four.directive.ts
@Directive({
selector: '[lastFourDirective]'
})
export class LastFourDirective implements OnInit {
private el: HTMLInputElement;
constructor(
private elementRef: ElementRef
) {
this.el = this.elementRef.nativeElement;
}
ngOnInit() {
}
@Input() lastFourDirective: string;
@HostListener('blur', ['$event.target.value'])
onBlur(value) {
console.log("blur", value);
return this.lastFourDigits(value)
}
@HostListener('keyup', ['$event.target.value'])
onKeyup(value) {
console.log("keyup", value);
return this.lastFourDigits(value)
}
private lastFourDigits(taxId: string) {
return taxId.replace(/\d(?=\d{4})/g, '#')
}
}
我怎样才能做到这一点?
PS:我没有使用 formControl,以上是我的输入示例。
【问题讨论】:
标签: javascript angular