Angular2 注入的服务未定义
Angular2 injected service going undefined
我正在关注 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);
}
}
您遇到范围问题,回调中的 "this"
未引用您的页面。像这样更改您的函数回调:
this.term.valueChanges.debounceTime(400).subscribe(
(term) => {
this.search(term);
});
我正在关注 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);
}
}
您遇到范围问题,回调中的 "this"
未引用您的页面。像这样更改您的函数回调:
this.term.valueChanges.debounceTime(400).subscribe(
(term) => {
this.search(term);
});