嗨,大家好我在角度5中遇到了一个小问题,我试图调用从公共ts文件导入的公共会话检查方法,我使用会话检查加载页面和单击注销按钮以将用户重定向到登录页面的方法。但在页面加载时它工作正常,但点击一个按钮就会出现未定义的错误,请提前帮助谢谢。
答案 0 :(得分:0)
this
定义中的 function() { ... }
不是指您的组件,而是指该函数上下文。使用箭头功能,this
上下文将保持绑定到您的组件:
logout() {
session.signOut().then(() => {
this.s.checkIfSignedIn();
});
}
此外,您应在声明类变量var
时删除u
关键字。
奖金建议:
关心你的编辑器/ linter警告(以便在访问gapi
等全局对象时抑制错误,首先声明如下:declare const gapi: any;
)
关心代码缩进
尝试使您的变量名称具有描述性,不要再使用a
或u
这样的名称,这样您就不会轻易迷失在代码中(顺便提一下){{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();
});
}