我有一個簡單的應用程序連接到firebase。登錄時,我只是想將用戶重定向到他們的個人資料頁面。但是,由於某些奇怪的原因,重定向沒有發生。Angular 2.0 Router.navigate登錄後不重定向
我看看here這聽起來像一個類似的問題,但不幸的是,沒有解決方案。
改變重定向到另一個頁面(沒有auth後衛)似乎工作,所以我想問題在那裏,我只是不知道如何解決它。
這裏是我的代碼,一旦它的用戶招牌叫我的服務:
onLogin() {
this.authService.signinUser(this.loginForm.value);
}
而且我auth.service.ts
:
public signinUser(user: User) {
firebase.auth().signInWithEmailAndPassword(user.email, user.password)
.catch(function (error) {
// Handle Errors here.
let errorCode = error.code;
let errorMessage = error.message;
// todo
console.log(errorCode);
console.log(errorMessage);
});
this.router.navigate(['/profile']); //not working
//this.router.navigate(['/']); //working
}
這裏是我的app.routing.ts
const APP_ROUTES: Routes = [
{ path: '', component: HomeComponent },
{ path: 'login', component: LoginComponent },
{ path: 'signup', component: SignupComponent },
{ path: 'profile', component: ProfileComponent, canActivate: [AuthGuard] },
];
export const routing = RouterModule.forRoot(APP_ROUTES);
這裏是我的auth.guard.ts
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private authService: AuthService) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
return this.authService.isAuthenticated().first();
}
}
整個項目在github上,因此您需要檢查另一個配置。
您是否在控制檯上發現任何錯誤? – Sefa
@SefaÜmitOray絕對沒有,控制檯是乾淨的。唯一有點奇怪的是,如果我重新點擊「登錄」按鈕,它會重定向,但只能在第二次嘗試時使用 – gudthing
@SefaÜmitOray當您登錄時會返回什麼?可以激活(route:ActivatedRouteSnapshot,狀態:RouterStateSnapshot):可觀察 | boolean { return this.authService.isAuthenticated()。first(); }' –