1
首先,我不確定這是處理這個問題的最好方法,但是我要找的是一個用於檢查用戶是否是「/登錄,如果是這樣,將它們重定向到「/儀表板」。我想在加載路由之前執行此操作,以避免屏幕閃爍,因爲它正在檢查遠程服務器上的身份驗證狀態。Angular 2可以通過遠程服務來承諾
我正在實現canActivate接口,但它不按預期工作。它碰到auth服務,並返回用戶,根據這個測試代碼應該重定向用戶,但是我在控制檯中看到用戶,但沒有重定向。
下面是代碼
import { Injectable } from '@angular/core';
import { Router, CanActivate } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { User } from './../../models/user.model';
import { AuthService } from './auth.service';
@Injectable()
export class HomeAuthGuard implements CanActivate {
constructor(
private router: Router,
private authService: AuthService
) {}
canActivate(): Promise<boolean> {
return new Promise((resolve) => {
this.authService.getStatus()
.then(function (user: User) {
console.log('home auth', user)
this.router.navigate(['/dashboard']);
resolve(false);
})
.catch(function() {
resolve(true);
});
});
}
}
你可以添加一些更多的代碼相關的路線,以瞭解你的問題 –