javascript - 对组件类函数的角度 ng-change 调用未触发
问题描述
我正在尝试使用 ng-change 以角度实现实时搜索框,但我传递的函数似乎没有触发。代码如下
HTML
<input type="text"
[(ngModel)]="searchTerm"
ng-change="updateSearch()"
name="firstname"
placeholder="Search Courses, Challenges, Datasets...">
Javascript
export class SearchbarComponent implements OnInit {
results = RESULTS;
filteredResults: SearchResult[];
searchTerm: string;
constructor() { }
ngOnInit() {
this.filteredResults = this.results.slice();
}
updateSearch():void {
console.log("fish");
this.filteredResults = [];
this.results.forEach(function(element) {
if (element.startsWith(this.searchTerm)) {
this.filteredResults.append(element);
}
});
}
updateSearch():void {
console.log("fish");
this.filteredResults = [];
this.results.forEach(function(element) {
if (element.startsWith(this.searchTerm)) {
this.filteredResults.append(element);
}
});
}
}
所以我把控制台日志放在那里看它是否正在触发,没有得到任何东西。
解决方案
ng-change
在 Angular 2+ 中不存在,因为那是 Angular 1.x 语法。事件绑定的语法类似于(change)
, (input)
,(click)
等等:
<input type="text" [(ngModel)]="someVar" (input)="someHandler($event)" />
您需要改为使用事件绑定(input)
来跟踪<input />
类型的输入/更改事件text
:
<input type="text"
[(ngModel)]="searchTerm"
(input)="updateSearch()"
name="firstname"
placeholder="Search Courses, Challenges, Datasets..." />
您还可以传递$event
给模板中的函数,以获取对、或您可能需要的任何其他内容的 HTML事件的访问权限。value
target
<input (input)="updateSearch($event)" />
这是一个简单的事件绑定示例,记录每个发生的输入/更改时传递的 a。(input)
$event
希望这会有所帮助!
推荐阅读
- python - 无法在烧瓶应用程序上使用 html 表单搜索任何非英语 [Unicode]
- sql - 大查询 SQL - 按顺序计算字符串中的元素
- typeorm - 获取没有子关系或具有某些参数的子项的项目
- python - Python - 无法导入 pyautogui
- sql - 使用桥表连接获得重复的结果
- java - 使用来自两个数组的信息来计算第三个数组的内容
- sql - 如何进行仅返回确切参数列表的查询
- python - python curl无法在标题中放置空内容类型
- python - 如果与列表匹配,则重新移动 Nan 值列数据框
- r - rmd 文件中的块代码图未在 blogdown 的帖子中显示