Я пытаюсь вернуть истину, если подписка вернет мне данные. Затем, если ошибка, я хочу, чтобы он вернул мне ложь.
Более того, моя подписка возвращает мне, есть ли cookie или нет. Если у меня есть cookie, я хочу вернуть мне True и подписаться на другую функцию, и если подписка переходит в ошибку, False.
В случае наличия cookie он должен подписаться на другую функцию, которая возвращает значение. Итак, у меня есть подписка внутри другого, и если они оба вернут мне значение, которое я хочу, оно должно быть ИСТИННЫМ.
Позвольте мне показать вам свой код:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
this.secureService.config({
controlType: (this.env.useCookiesFromSTS
? SecurityConstant.COOKIE_CONTROL_TYPE
: SecurityConstant.TOKEN_CONTROL_TYPE
),
advanceTime: this.env.securityConfig_advanceTime,
isDebug: false,
isSecure: this.env.securityConfig_isSecure,
whiteList: ['directline.botframework.com']
}, {
urlService: this.env.endpoints_urlSCC,
urlAttrUser: this.env.endpoints_urlUDS
}, this.env.appName)
.subscribe(
(cookie) => {
if(cookie){
this.secureService.getAttrUser(['ComTipoEmpleado'], [''])
.subscribe(
//Return true for the guard
(responseAttrUser) => console.log(responseAttrUser),
(error) => { console.error(error);
}
});
},
(err) => {
return false;
console.error(err);
});
}
В основном мне нужно контролировать, есть ли в моем браузере cookie и авторизован ли сотрудник, если нет, то вернуть false.
Это не работает:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):
boolean {
this.secureService.config({
controlType: (this.env.useCookiesFromSTS
? SecurityConstant.COOKIE_CONTROL_TYPE
: SecurityConstant.TOKEN_CONTROL_TYPE
),
advanceTime: this.env.securityConfig_advanceTime,
isDebug: false,
isSecure: this.env.securityConfig_isSecure,
whiteList: ['directline.botframework.com']
}, {
urlService: this.env.endpoints_urlSCC,
urlAttrUser: this.env.endpoints_urlUDS
}, this.env.appName)
**.map(
(cookie) => {
if (cookie){
return true;
} else {
return false;
}
});**
/*this.secureService.getAttrUser(['ComTipoEmpleado'], [''])
.subscribe(
(responseAttrUser) => console.log(responseAttrUser),
(error) => { console.error(error);
});*/
}
map
вместоsubscribe
. - person SiddAjmera   schedule 01.10.2018Observable<boolean>
в качестве возврата метода canActivate. - person Roberto Zvjerković   schedule 01.10.2018