Dependency injection Angular2注入服务未定义
我在学习教程,并在维基百科上搜索了一个给定的术语,得到了下面的代码。下面的代码运行良好,可以从维基百科获取搜索结果Dependency injection Angular2注入服务未定义,dependency-injection,angular,angular2-services,Dependency Injection,Angular,Angular2 Services,我在学习教程,并在维基百科上搜索了一个给定的术语,得到了下面的代码。下面的代码运行良好,可以从维基百科获取搜索结果 export class WikiAppComponent { items: Array<string>; term = new Control(); constructor(public wikiService: WikiService) { } ngOnInit() { this.term.valu
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;
})
});
}
}
导出类WikiAppComponent{
项目:阵列;
术语=新控件();
构造函数(公共wikiService:wikiService){}
恩戈尼尼特(){
this.term.valueChanges.debounceTime(400).subscribe(term=>{
this.wikiService.search(term).then(res=>{
这个项目=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);
}
}
导出类WikiAppComponent{
项目:阵列;
术语=新控件();
构造函数(公共wikiService:wikiService){}
搜索(术语){
this.wikiService.search(term).then(res=>{
这个项目=res;
});
}
恩戈尼尼特(){
this.term.valueChanges.debounceTime(400.subscribe)(this.search);
}
}
您遇到了范围问题,回调中的“此”
未引用您的页面。按如下方式更改函数回调:
this.term.valueChanges.debounceTime(400).subscribe(
(term) => {
this.search(term);
});
您遇到了范围问题,
“回调中的此”
未引用您的页面。按如下方式更改函数回调:
this.term.valueChanges.debounceTime(400).subscribe(
(term) => {
this.search(term);
});
能否在浏览器中打开调试器,在搜索方法中设置断点,然后查看“this”的定义?TypeScript尽其所能模拟真实的类封装,但当您使用函数指针时,javascript“this”问题仍然会浮出水面。您能否在浏览器中打开调试器,在搜索方法中设置断点,并查看“this”的定义?TypeScript尽其所能模拟真实的类封装,但当您使用函数指针时,javascript“this”问题仍然会浮出水面。