2017-07-27 9 views
4

私はこれまでに答えられたことを知っていますが、私は答えに満足していません。角度4ログアウト後にページをリダイレクトする方法は?

私の問題は簡単です、ユーザーはログアウトします。

ログインする必要があるページ(auth.service.tsでauth.guard.tsに設定されている)とユーザーログアウトの場合は、彼を自宅にリダイレクトする必要があります。

彼が安全なページにいる場合、私は彼をリダイレクトしたくありません。

私はAuthGuardを使用することができませんでしたが、私にはそう、ページをリロードする必要はありません:

location.reload() 

私のオプションは何ですか?

答えて

6
import { Router } from '@angular/router'; 
..... 

constructor(private router:Router, authService: AuthService){} 
    //toastMessagesService: ToastMessagesService){} if you have one 
.... 

onLogOut(){ 
    authService.logOut(); 

    if (this.router.url==="/admin"){ 
     //this.toastMessagesService.show("Logged out"); // display a toast style message if you have one :) 
     this.router.navigate(["/home"]); //for the case 'the user logout I want him to be redirected to home.' 
    } 
    else{ 
    // Stay here or do something 
    // for the case 'However if he is on a safe page I don't want to redirected him.' 
    } 
} 
1

このように家にログアウトすると、ユーザーをリダイレクトできます。

残りについては、私はちょっと混乱しています...コードを共有できますか?

+0

に役立ちます願っています。たとえば、/ home、/ admin、/ contentという3つのページがあるとします。ユーザーが/ adminでログアウトした場合、彼を/ homeにリダイレクトしたいと思う。彼が/ contentからログアウトすると、私は彼をリダイレクトしたくない。あなたの解決策で私は彼にリダイレクトします。 – Frenentix

+0

authSignOutContent()のような関数を作成し、リダイレクトしないでください。paramがtrueのときにリダイレクトするためにparamをサービスに渡してください。 –

1

次のリダイレクトコードを見つけてください、それは彼がログインする必要はありませんページ上にある場合、私は彼をリダイレクトしたくない

import {Component} from '@angular/core'; 
import {Router} from '@angular/router'; 

    export class LogoutComponant { 
    title = 'Logout'; 


constructor(

    private router: Router, 

) {} 

onLogout() { 
    this.router.navigate(['/']) 
} 

} 
関連する問題