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

归功于回答