gpt4 book ai didi

angular - canActivate 保护方法中的错误

转载 作者:搜寻专家 更新时间:2023-10-30 21:29:59 27 4
gpt4 key购买 nike

下面是我在 TypeScript 中实现 CanActivate 保护子句,当我编译这段代码时,它显示如下错误

A function whose declared type is neither 'void' nor 'any' must return a value

   canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):boolean {

this.appService.isValidUser().subscribe({
next: (data) => data.authenticated, // this return true or false
error: (err) => false
});
}

这个错误的原因是什么?

最佳答案

canActivate 应该返回一个 Observable 而不是 Subscription。如果您调用 .subscribe(),您将获得一个订阅,因此我们使用 .map()

要处理错误情况,请使用 .catch()

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):Observable<boolean> {

return this.appService.isValidUser()
.map(data => data.authenticated)
.catch(_ => Observable.of([false]));
}

不要忘记导入所有运算符

import 'rxjs/add/observable/of';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';

关于angular - canActivate 保护方法中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41911094/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com