Node.js 角度4可激活防护装置不使用服务加载部件;简单可观察的(真实的)作品
我试图在Angular中使用CanActivate guard,当我从它调用服务时,它不工作,Node.js 角度4可激活防护装置不使用服务加载部件;简单可观察的(真实的)作品,node.js,angular,typescript,angular-services,angular-components,Node.js,Angular,Typescript,Angular Services,Angular Components,我试图在Angular中使用CanActivate guard,当我从它调用服务时,它不工作,返回true甚至返回Observable.of(true) 但当我不调用任何服务,只编写代码时,它就可以工作并加载组件 Observable.of(真)在canActivate 以下是不起作用的代码: canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
返回true
甚至返回Observable.of(true)代码>
但当我不调用任何服务,只编写代码时,它就可以工作并加载组件
Observable.of(真)代码>在canActivate
以下是不起作用的代码:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
//return Observable.of(true);
return this._userService.verify().subscribe((result: Array<Object>) => {
let user : UserDetail = new UserDetail();
Object.keys(user).forEach(key=>{
let listValue = result.filter(m=>m["m_type"]==key);
if(listValue.length>0){
user[key] = result.filter(m=>m["m_type"]==key)[0]["m_value"];
}
});
this.userDetails = user;
return Observable.of(true);
//return true;
}, (error: any) => {
// error when verify so redirect to login page with the return url
this._router.navigate(['/login'], { queryParams: { returnUrl: state.url } });
return true;
}, () => {
console.log("auth.guard : completed.");
//return true;
return Observable.of(true);
});
canActivate(路由:ActivatedRouteSnapshot,状态:RouterStateSnashot):可观察{
//可观察的返回(真);
返回此。\u userService.verify().subscribe((结果:数组)=>{
让用户:UserDetail=newuserdetail();
Object.keys(user.forEach)(key=>{
让listValue=result.filter(m=>m[“m_type”]==key);
如果(listValue.length>0){
用户[key]=result.filter(m=>m[“m_类型”]==key)[0][“m_值”];
}
});
this.userDetails=用户;
可观察的返回(真);
//返回true;
},(错误:任意)=>{
//验证so重定向到带有返回url的登录页面时出错
这个._router.navigate(['/login'],{queryParams:{returnUrl:state.url}});
返回true;
}, () => {
log(“auth.guard:completed.”);
//返回true;
可观察的返回(真);
});
以下代码工作:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return Observable.of(true);
});
canActivate(路由:ActivatedRouteSnapshot,状态:RouterStateSnashot):可观察{
可观察的返回(真);
});
可观察不承诺订阅中的任何返回代码都不起作用。请将代码更改为此
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
//return Observable.of(true);
return this._userService.verify().switchMap((result: Array<Object>) => {
let user : UserDetail = new UserDetail();
Object.keys(user).forEach(key=>{
let listValue = result.filter(m=>m["m_type"]==key);
if(listValue.length>0){
user[key] = result.filter(m=>m["m_type"]==key)[0]["m_value"];
}
});
this.userDetails = user;
return Observable.of(true);
//return true;
}).catch(() => {
// error when verify so redirect to login page with the return url
this._router.navigate(['/login'], { queryParams: { returnUrl: state.url } });
return Observable.of(false);
});
canActivate(路由:ActivatedRouteSnapshot,状态:RouterStateSnashot):可观察{
//可观察的返回(真);
返回此值。_userService.verify().switchMap((结果:数组)=>{
让用户:UserDetail=newuserdetail();
Object.keys(user.forEach)(key=>{
让listValue=result.filter(m=>m[“m_type”]==key);
如果(listValue.length>0){
用户[key]=result.filter(m=>m[“m_类型”]==key)[0][“m_值”];
}
});
this.userDetails=用户;
可观察的返回(真);
//返回true;
}).catch(()=>{
//验证so重定向到带有返回url的登录页面时出错
这个._router.navigate(['/login'],{queryParams:{returnUrl:state.url}});
可观察到的返回(错误);
});
执行时,让x=this.observable.subscribe();
x是订阅,但不可见