我有这个要求,我必须首先加载一些应用程序设置,然后获取用户信息。所以代码目前是如何 -
canActivate(route, state):boolean/Observable<boolean>{
return this.getSettings().map(response=>
{
this.data1=response;
this.getUser()
}).catch(error=>
{
this.error=error<any>;
})
)
}
这里受到警卫保护的路线取决于getSettings()
的booelan状态,但我不希望如此。我想要的是取决于getUser()
的布尔状态。
getUser()
的成功回调中调用 getSettings()
,因为它取决于来自getSettings()
的部分数据。
这是getUser()
:
getUser(){
return this.service.getUser().
subscribe(
response=>//do some stuff
,
error=> this.router.navigate(['errorpage'])
)
}
我尝试在单独的getAppSettings
中分隔settingsService
的代码,然后在canActivate
中执行此操作 -
canActivate(route, state):boolean/Observable<boolean>/Promise<boolean>{
return this.settingsService.getSettings().toPromise().then(
function(auth:boolean){
if(!auth){
return Promise.resolve(false);
}else{
return this.service.getUser().
subscribe(
response=>{//do some stuff
return Promise.resolve(true);},
error=> {this.router.navigate(['errorpage']), Promise.resolve(false)}
)
}
}
)
}
但上述代码不允许我从boolean/Promise<boolean>/Observable<boolean>
向getUser
函数返回canActivate
。我怎样才能实现它?