我想用 canActive 方法创建一个路由保护并在几秒钟后响应。我用这个:
export class GuardService implements CanActivate {
constructor(private router: Router,
private UserInfo: UserInfoService) { }
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
setTimeout(() => {
this.router.navigate(['/']);
return false;
}, 2000);
}
}
所以这个函数在 2 秒后返回一个 false。我希望能正常工作,但 angular 没有编译代码并返回以下错误:
ERROR in src/app/services/guard.service.ts(14,44): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value.
它说 canActive 应该返回一个布尔值,而不是在 setTimeOut 中,但我的守卫是异步守卫,延迟响应是可以的。