これが私のシナリオです:
ユーザーが というルートを訪れます/protected
。私の CanActivate ガードでは、ユーザーがログインしているかどうかを確認します。ログインしていない場合は、ルートをレンダリングしたいのですが、アドレス バーには表示したままです。ユーザーが保護されたページと存在しないページを区別できないようにしたい。404
/protected
これは私が試したもので、うまくいきません。
@Injectable()
export class LoggedInGuard implements CanActivate {
constructor(private router: Router, private userService: UserService) {}
canActivate() {
if (this.userService.getUser()) return true;
this.router.navigate(['/404']);
return false;
}
}
ルーティング後、アドレスバーにURLが表示されるの/404
ですが、表示させたいです/protected
。
アドレス バーの URL は ではなく以前の URL になるため、に変更してthis.router.navigate(['/404'], { skipLocationChange: true });
も機能しません/protected
。
私の質問は次のとおりです。ユーザーがログインしていない場合、アドレスバーにアクセスしようとしていた URL を保持しながら、別のコンポーネントをどのようにレンダリングしますか?