Angular2注入的服务未定义

时间:2016-05-24 04:46:18

标签: dependency-injection angular angular2-services

我正在关注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);
      }
    }

1 个答案:

答案 0 :(得分:2)

您遇到了范围问题,回调中的"this"未引用您的网页。像这样改变你的函数回调:

this.term.valueChanges.debounceTime(400).subscribe( 
   (term) => {
      this.search(term);
   });