Angular 4 通过主机侦听器更新输入文本值
Angular 4 update input text value via Host listener
我的模板中有输入字段,我想捕捉每个按键和
通过删除空格更新 dom 中的值 - trim.
我可以捕获事件并且我构建的函数正常工作
但输入文本字段中的值未相应更新。
@HostListener('input', [ '$event.target.value' ])
input( value ) {
console.log('value! ' + value);
value = value.replace(/\s/gi, '');
console.log('value after trim ' + value);
return true;
}
有什么想法吗?
当使用 Angular 时,尝试实际使用 Angular。
有[(ngModel)]="myInput"
和(ngModelChange)="cleanup()"
现在在ts文件中创建一个函数:
cleanup() {
this.myInput = this.myInput.replace(/ /g, '');
}
您可以只使用 keyup
事件并调用一个方法来 trim 您的值。 Typescript 为您提供 trim()
功能。
您的 html 将如下所示:
<input (keyup)="keyUp($event)">
... 并在您的打字稿代码中定义方法:
keyUp(event){
event.target.value = event.target.value.trim();
}
Link 到 Plunker Demo
一种更简单的方法,代码更少,优点是可以防止输入 space 和插入符号像公认的解决方案一样移回 space。
<input (keydown.space)="$event.preventDefault()">
笨蛋here
归功于回答
我的模板中有输入字段,我想捕捉每个按键和 通过删除空格更新 dom 中的值 - trim.
我可以捕获事件并且我构建的函数正常工作 但输入文本字段中的值未相应更新。
@HostListener('input', [ '$event.target.value' ])
input( value ) {
console.log('value! ' + value);
value = value.replace(/\s/gi, '');
console.log('value after trim ' + value);
return true;
}
有什么想法吗?
当使用 Angular 时,尝试实际使用 Angular。
有[(ngModel)]="myInput"
和(ngModelChange)="cleanup()"
现在在ts文件中创建一个函数:
cleanup() {
this.myInput = this.myInput.replace(/ /g, '');
}
您可以只使用 keyup
事件并调用一个方法来 trim 您的值。 Typescript 为您提供 trim()
功能。
您的 html 将如下所示:
<input (keyup)="keyUp($event)">
... 并在您的打字稿代码中定义方法:
keyUp(event){
event.target.value = event.target.value.trim();
}
Link 到 Plunker Demo
一种更简单的方法,代码更少,优点是可以防止输入 space 和插入符号像公认的解决方案一样移回 space。
<input (keydown.space)="$event.preventDefault()">
笨蛋here
归功于回答