函数不是从角度5中的单击函数调用的

时间:2018-04-26 20:50:08

标签: javascript angular typescript angular5

嗨,大家好我在角度5中遇到了一个小问题,我试图调用从公共ts文件导入的公共会话检查方法,我使用会话检查加载页面和单击注销按钮以将用户重定向到登录页面的方法。但在页面加载时它工作正常,但点击一个按钮就会出现未定义的错误,请提前帮助谢谢。

仪表板 enter image description here 进口 enter image description here

3 个答案:

答案 0 :(得分:0)

this定义中的

function() { ... }不是指您的组件,而是指该函数上下文。使用箭头功能,this上下文将保持绑定到您的组件:

logout() {
  session.signOut().then(() => {
    this.s.checkIfSignedIn();
  });
}

此外,您应在声明类变量var时删除u关键字。

奖金建议:

  • 关心你的编辑器/ linter警告(以便在访问gapi等全局对象时抑制错误,首先声明如下:declare const gapi: any;

  • 关心代码缩进

  • 尝试使您的变量名称具有描述性,不要再使用au这样的名称,这样您就不会轻易迷失在代码中(顺便提一下){{1也有变量,也许你应该使用它而不是定义一个名为utils的新的......)

答案 1 :(得分:0)

您正在使用u声明并使用var进行调用。它不是组件的属性,这就是它无法正常工作的原因。

答案 2 :(得分:0)

你的承诺范围不同。

logout() {
 let self = this;
 var session = gapi.auth2.getAuthInstance();
 session.signOut().then( function() {
   localStorage.clear();
   self.s.checkIfSignedIn();
  });
}