В моем примере приложения Angular 2 я использую ngrx / store для реализации шаблона проектирования redux.
Я внедрил CanActivate guard в свое приложение, и ниже приведен соответствующий код.
canActivate(route: ActivatedRouteSnapshot, router: RouterStateSnapshot): Observable<boolean> {
this.store.dispatch(canActivate());
// HOW TO RETURN value ??
}
И ниже соответствующие действия
export function canActivate(): Action {
$.blockUI();
return {
type: UserActionTypes.CAN_ACTIVATE,
payload:{}
}
}
export function canActivateSuccess(canActivateResponse: any): Action {
$.unblockUI();
return {
type: UserActionTypes.CAN_ACTIVATE_SUCCESS,
payload: canActivateResponse.data
}
}
И ниже соответствующий код редуктора
....
case UserActionTypes.CAN_ACTIVATE_SUCCESS:
return Object.assign({}, action.payload);
.....
и ниже соответствующий код эффектов
@Effect() canActivate$ = this.actions$
.ofType(UserActionTypes.CAN_ACTIVATE)
.switchMap(
(action) => this.userService.canActivate()
.map(response => canActivateSuccess)
);
Мой вопрос: canActivate guard должен возвращать Observable логического значения, но, возвращать ли true или false, будет известно только в функции / действии canActivateSuccess, в этом случае как мне вернуть значение из canActivate guard.