Answers:
我只使用了事件输入,它按如下所示工作正常:
在.html文件中:
<input type="text" class="form-control" (input)="onSearchChange($event.target.value)">
在.ts文件中:
onSearchChange(searchValue: string): void {
console.log(searchValue);
}
使用ngModelChange
通过打破了[(x)]
语法到它的两片,即财产数据绑定和事件绑定:
<input type="text" [ngModel]="mymodel" (ngModelChange)="valuechange($event)" />
{{mymodel}}
valuechange(newValue) {
mymodel = newValue;
console.log(newValue)
}
它也适用于退格键。
让我们看看为什么:
keyup
是肯定是最安全的选择之一,但是input
活动比提前了一步keyup
。 keyup
不像input
,如果通过其他方式(例如,绑定)更改了文本框的值,则该方法不起作用。
(change)
的方法,然后是一些解决方法。接受的答案很烂!
(ngModelChange)
?
<input type="text" [ngModel]="mymodel" (keypress)="mymodel=$event.target.value"/>
{{mymodel}}
处理这种情况的另一种方法是在组件初始化时使用formControl并进行订阅valueChanges
,这将允许您使用rxjs运算符来满足高级要求,例如执行http请求,应用反跳操作直到用户写完句子,获取最后一个值并省略先前的...
import {Component, OnInit} from '@angular/core';
import { FormControl } from '@angular/forms';
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
@Component({
selector: 'some-selector',
template: `
<input type="text" [formControl]="searchControl" placeholder="search">
`
})
export class SomeComponent implements OnInit {
private searchControl: FormControl;
private debounce: number = 400;
ngOnInit() {
this.searchControl = new FormControl('');
this.searchControl.valueChanges
.pipe(debounceTime(this.debounce), distinctUntilChanged())
.subscribe(query => {
console.log(query);
});
}
}
FormGroup
<input type="text" (keypress)="myMethod(myInput.value)" #myInput />
存档.ts
myMethod(value:string){
...
...
}
您正在寻找的是
<input type="text" [(ngModel)]="mymodel" (keyup)="valuechange()" />
{{mymodel}}
然后,通过访问this.mymodel
.ts文件中的绑定,对数据进行任何所需的操作。