我正在使用ngrx/router。
我有一个LoginGuard
,当我打开一个需要登录的页面时,LoginGuard 运行之前isSignedIn
设置为 true。所以当时isSignedIn
是undefined
。
@Injectable()
export class LoginGuard implements Guard {
constructor(private _router: Router, private _userService: UserService) { }
protectRoute({ route, params, isTerminal }: TraversalCandidate): Observable<boolean> {
return this._userService.checkSignedIn()
.map(isSignedIn => {
if (!isSignedIn) {
this._router.replace('/landing');
return false;
} else {
return true;
}
}).first();
}
}
我在应用程序的开头设置isSignedIn
了true
,这是我脑海中最早的地方。
class App implements OnInit {
ngOnInit() {
// I set isSignedIn in UserService to true here after I got user info from the server
}
}
但也许还不够早?那么如何在Guard运行之前设置isSignedIn
呢?谢谢true