Javascript 未定义服务中的Angular2函数

Javascript 未定义服务中的Angular2函数,javascript,angular,typescript,Javascript,Angular,Typescript,我尝试从组件(fb.component.ts)调用服务的函数(auth.service.ts中的loginFb)。 似乎我导入了所有内容并初始化了服务。但是仍然得到一个“loginfb”未定义的错误。 my auth.service.ts: import { Injectable } from '@angular/core'; import { Headers, Http } from '@angular/http'; import 'rxjs/add/operator/toPromise';

我尝试从组件(fb.component.ts)调用服务的函数(auth.service.ts中的loginFb)。 似乎我导入了所有内容并初始化了服务。但是仍然得到一个“loginfb”未定义的错误。 my auth.service.ts:

import { Injectable } from '@angular/core';
import { Headers, Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';

@Injectable()
export class AuthService {

 constructor(private http: Http) {}

 loginFb(uid, accessToken): boolean{
   let headers = new Headers();
   headers.append('Content-Type', 'application/json');
   let body = JSON.stringify({"uid":uid,"accessToken": accessToken});
   this.http.post('http://localhost:3002/signinfb',body,{headers:headers})
   .toPromise()
   .then(response => {
      localStorage.setItem('id_token', response.json().id_token);
      return true;
    })
  .catch(this.handleError);
 return false;
}

private handleError(error: any): Promise<any> {
   console.error('An error occurred', error);
   return Promise.reject(error.message || error);
  }
 }

有人能帮我解决这个问题吗?谢谢

您需要使用
statusChangeCallback将
绑定到适当的上下文中

FB.login(this.statusChangeCallback.bind(this),
或者将
statusChangeCallback
设置为箭头函数

statusChangeCallback = (response) => {
FB.login(this.statusChangeCallback.bind(this),
statusChangeCallback = (response) => {