Подписка не назначается для ввода маршрута - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь установить маршрут canActivate, но получаю синтаксическую ошибку (подписке не назначается тип маршрута):

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
const pin = route.paramMap.get('pin');
let canActivate;
if (pin) {
  return this.partService.getCached(pin).pipe(
     take(1),
     concatMap(p => { 
       if(this.appService.isUserAuthorized(Authorization.canAccessAll_View, p))
       { 
         return of(true);
       }
       return this.partService.getEnrolled(pin,'WW')
  })).subscribe(parts => {
        if(parts)
        {
          parts.forEach(part => {
            if (part.agencyCode == this.appService.user.agencyCode) {
              if (this.appService.isUserAuthorizedToView(part)) {
                canActivate = true;
              } else {
                this.routeToUnauthorized(state.url);
                canActivate = false;
              }

            }
          });
        } 
        return canActivate;       
  });      

}

}

Что здесь неверного в синтаксисе? Любая помощь будет высоко оценена.

1 Ответ

1 голос
/ 12 февраля 2020

Вместо подписки попробуйте картирование. Как упоминалось в cghislai, вы должны либо вернуть логическое значение, Promise или Observable;

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
const pin = route.paramMap.get('pin');
let canActivate = false; // initialize with a false value
if (pin) {
  return this.partService.getCached(pin).pipe(
     take(1),
     concatMap(p => { 
       if(this.appService.isUserAuthorized(Authorization.canAccessAll_View, p))
       { 
         return of(true);
       }
       return this.partService.getEnrolled(pin,'WW');
  }),
  map(parts => {
    if(parts)
        {
          parts.forEach(part => {
            if (part.agencyCode == this.appService.user.agencyCode) {
              if (this.appService.isUserAuthorizedToView(part)) {
                canActivate = true;
              } else {
                this.routeToUnauthorized(state.url);
                canActivate = false;
              }
            }
          });
        } 
        return canActivate;
  }));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...