Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 角度4可激活防护装置不使用服务加载部件;简单可观察的(真实的)作品_Node.js_Angular_Typescript_Angular Services_Angular Components - Fatal编程技术网

Node.js 角度4可激活防护装置不使用服务加载部件;简单可观察的(真实的)作品

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> {

我试图在Angular中使用CanActivate guard,当我从它调用服务时,它不工作,
返回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是订阅,但不可见