【发布时间】:2018-04-22 09:59:41
【问题描述】:
如果用户使用 setTimeout 未经授权,我正在尝试实例化路由器对象并导航到登录。问题是当我使用下面的代码系统工作时。
setTimeout(()=>this.router.navigate(['/login']),3000);
但是当我把这一行改成
setTimeout(this.navigateToLogin,3000);
并添加
navigateToLogin(){
console.log("i am in navigate");
this.router.navigate(['/login']);
}
我收到以下错误。我有点困惑。任何帮助将不胜感激..
TypeError: Cannot read property 'navigate' of undefined
全局错误处理程序
handleError(error){
console.log(error);
this.router = this.injector.get(Router)
switch(error.status){
case ErrorCodes.UNAUTHORIZED_USER:{
this._msgService.emitGlobalMessage(new EGlobalModal("Error","Unauthorized User, You will be directed in 3 seconds",false,"red"));
//setTimeout(()=>this.router.navigate(['/login']),3000);
setTimeout(this.navigateToLogin,3000);
break;
}
default:{
this._msgService.emitGlobalMessage(new EGlobalModal("Error",error,false,"red"));
break;
}
}
}
网络上有很多关于这个主题的令人困惑的信息。我知道这是 function(){} 和箭头函数之间的区别。但我有点需要解释。在此先感谢
【问题讨论】:
标签: angular error-handling settimeout router