несколько охранников разрешения, доступ к каждому с любого маршрута - PullRequest
0 голосов
/ 16 ноября 2018

Мне нужно получить доступ от одного решающего опекуна к другому (от родителя к потомку), где «другой» (потомок) имеет асинхронные данные, так как я могу получить эти асинхронные данные от дочернего маршрута к родительскому маршруту

Вот код

path

const routes: Route[] = [
  { path: '', redirectTo: 'main', pathMatch: 'full' },
  { path: 'main', component: MainComponent },
  { path: 'project', 
    component: ProjectContainerComponent,  
    children: [
      { 
        path: ':id', 
        component: ProjectComponent, 
        data: {
          projectTitle: 'Все задачи',
          groupBy: 'Без группировки'
        },  
        resolve: {
          projectName: ProjectNameResolverService
        },
        children: [
          { path: '', redirectTo: 'list', pathMatch: 'full'},
          { path: 'list', component: ProjectIssueListContainerComponent, children: [
            { path: '', component: ProjectIssueListComponent },
            { path: ':issueId', component: ProjectIssueContainerComponent,
              resolve: {
                task: IssueResolverService
              }
            }
          ] },
          { path: 'create', component: CreateIssueComponent },

        ]
      }
    ]
  },
  { path: 'access_denied', component: AccessDeniedComponent }
]

child

export class IssueResolverService implements Resolve < any > {

  constructor(
    private projectsService: ProjectsService,
    private router: Router
  ) {}

  resolve(route: ActivatedRouteSnapshot) {
    const id = +route.paramMap.get('issueId');
    return this.projectsService.getProjectTask(id)
      .pipe(
        map((task: any) => {
          console.log(task);
          return task
        })
      );
  }

}

parent

export class ProjectNameResolverService {

  constructor() { }
  resolve(route: ActivatedRouteSnapshot) {
    console.log(route.firstChild.firstChild.data) // {} - but need to get it
  }
}
...