Ad alanında bazı kısıtlamalar var, bu nedenle aşağıdaki gibi yönergeyi kullanarak ad alanını doğrulamaya çalışıyorum. İç yönerge Geçerli adı kontrol etmek ve geçerli adın yerine valueAccessor.writeValue(newVal)
'u kullanarak metin kutusuna değiştirilmek üzere normal ifadeyi kullanıyorum. Burada, metin kutusundaki imleç atlamada bazı sözcüklerin ortalarını yazmaya çalışıyorum. Orada bir odak noktası ya da değil, seçim olmadığını aslında DefaultValueAccessor
gelirAçısal 2 Verileri değiştirirken metin kutusunun sonundaki imleç atlama
@Directive({
selector: '[validateName]',
host: {
'(ngModelChange)': 'onInputChange($event, false)',
'(keydown.backspace)': 'onInputChange($event.target.value, true)',
'(focusout)': 'removeClass()'
}
})
export class NameValidator {
constructor(public model: NgControl,public renderer: Renderer, public el: ElementRef) { }
onInputChange(event, backspace) {
if (!backspace) {
// Remove invalid characters (keep only valid characters)
var newVal = event.replace(/^[0-9\s]/g, '').replace(/[^A-Za-z0-9_$]/g,'');
// Add class for invalid name.
if (/^[0-9\s]/g.test(event) || /[^A-Za-z0-9_$]/g.test(event)) {
this.renderer.setElementClass(this.el.nativeElement, 'invalid-name', true);
}
else {
this.renderer.setElementClass(this.el.nativeElement, 'invalid-name', false);
}
// set the new value
this.model.valueAccessor.writeValue(newVal);
}
}
removeClass() {
this.renderer.setElementClass(this.el.nativeElement, 'invalid-name', false);
}
}
'this.el.nativeElement.s etSelectionRange (start, end); '' benim için çalışıyor. Çok havalı bir adam. –