Angular中ng-change调用组件类函数未触发问题求助
解决Angular中实时搜索框
updateSearch()函数未触发的问题 嘿,这问题我熟!你之所以遇到updateSearch()没触发的情况,是因为你在Angular(2+)里误用了AngularJS的指令ng-change——这俩框架的指令语法完全不一样,Angular(2+)根本不识别ng-change哦!
正确的事件绑定方式
在Angular(2+)中,要绑定输入事件得用括号包裹的事件语法:
- 如果要实时响应输入(每输入一个字符就触发),用
(input)事件 - 如果要失去焦点时触发,用
(change)事件
修改后的HTML代码:
<input type="text" [(ngModel)]="searchTerm" (input)="updateSearch()" name="firstname" placeholder="Search Courses, Challenges, Datasets..." >
补充组件中updateSearch()的实现示例
你还需要在组件类里完善updateSearch()函数,比如根据searchTerm过滤结果:
export class SearchbarComponent implements OnInit { results = RESULTS; filteredResults: SearchResult[]; searchTerm: string; constructor() { } ngOnInit() { // 初始化显示全部结果 this.filteredResults = [...this.results]; } updateSearch() { // 如果搜索词为空,显示全部结果 if (!this.searchTerm) { this.filteredResults = [...this.results]; return; } // 根据搜索词过滤结果(忽略大小写) this.filteredResults = this.results.filter(item => item.name.toLowerCase().includes(this.searchTerm.toLowerCase()) ); } }
这样调整后,你输入内容时updateSearch()就会实时触发,实现实时搜索的效果啦~
内容的提问来源于stack exchange,提问作者stmfunk
相关产品推荐
相关产品推荐

