0
ルータオブジェクトをインスタンス化しようとしていますが、ユーザがsetTimeoutを使用して権限のない場合はログインするようにナビゲートしています。問題は、私が以下のコードシステムを使用している場合です。ルータ2のsetTimeoutメソッド内でrouter.navigateを使用できません
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(){}とarrow functionの違いだと理解しています。しかし、私は説明が必要です。事前に感謝します