我正在关注this教程,并使用搜索维基百科获取以下代码,了解给定术语。下面的代码工作正常,并从维基百科中获取搜索结果。
export class WikiAppComponent {
items: Array<string>;
term = new Control();
constructor(public wikiService: WikiService) { }
ngOnInit() {
this.term.valueChanges.debounceTime(400).subscribe(term => {
this.wikiService.search(term).then(res => {
this.items = res;
})
});
}
}
但是,当我重构并将搜索代码移动到单独的函数时,它无法正常工作。搜索功能中的this.wikiService未定义。你能否解释它为何未定义?
export class WikiAppComponent {
items: Array<string>;
term = new Control();
constructor(public wikiService: WikiService) { }
search(term) {
this.wikiService.search(term).then(res => {
this.items = res;
});
}
ngOnInit() {
this.term.valueChanges.debounceTime(400).subscribe(this.search);
}
}
答案 0 :(得分:2)
您遇到了范围问题,回调中的"this"
未引用您的网页。像这样改变你的函数回调:
this.term.valueChanges.debounceTime(400).subscribe(
(term) => {
this.search(term);
});