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”问题仍然会浮出水面。