gpt4 book ai didi

javascript - 对组件类函数的 Angular ng-change 调用未触发

转载 作者:行者123 更新时间:2023-11-28 17:32:24 25 4
gpt4 key购买 nike

我正在尝试使用 ng-change 以 Angular 实现实时搜索框,但我传递给它的函数似乎没有触发。代码如下

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 语法。 Event Binding 的语法看起来像 (change) , (input) ,和(click)仅举几例:

<input type="text" [(ngModel)]="someVar" (input)="someHandler($event)" />

您需要改用事件绑定(bind) (input)跟踪 <input /> 的输入/更改事件类型 text :

<input type="text" 
[(ngModel)]="searchTerm"
(input)="updateSearch()"
name="firstname"
placeholder="Search Courses, Challenges, Datasets..." />

您还可以传递$event到模板中的函数以访问 HTML Event对于 value , target ,或您可能需要的任何其他内容。

<input (input)="updateSearch($event)" />

这是一个简单的 example(input)事件绑定(bind)正在运行,记录已传递的 $event发生的每个输入/更改。

希望有帮助!

关于javascript - 对组件类函数的 Angular ng-change 调用未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50004537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com