我有一个带有返回Observable
的方法的服务SecurityService {
canAccess():Observable<boolean> {...}
我在不同的地方使用它,在canActivate防护和w / in组件中。
这是我的canActivate方法:
canActivate(route:ActivatedRouteSnapshot, state: RouterStateSnapshot) {
return this.securityService.canAccess(route.data['securityScreenId'],'screen','NA').first().map(result => {
console.log(result);
return result;
});
}
当我查看浏览器控制台时,我看到了这个输出:
ScalarObservable {_isScalar: true, value: true, scheduler: null}
当我将此警卫应用于路线时,路线将被取消,路线的组件不会加载。
我认为map应该采用被映射的observable的响应,然后根据传递给map的方法对其进行转换。所以在我的方法中,不应该将console.log的结果改为true,而不是ScalarObservable吗?
答案 0 :(得分:0)
canActivate(route:ActivatedRouteSnapshot, state: RouterStateSnapshot) {
return this.securityService.canAccess(route.data['securityScreenId'],'screen','NA').first().subscribe(result => {
console.log(result);
return result;
});
}
AFAIK Observables在您订阅之前不会执行。