Указание обратного URL на CanLoad Angular 6 - PullRequest
0 голосов
/ 30 августа 2018

Я реализовал LazyLoading по пути /projects/1/sub

и затем применил CanLoad к маршруту

{ path: 'projects/:projectId/sub', canLoad: [AuthGuard], canActivate: [AuthGuard], loadChildren: './app-sub-line.module#AppSubLineModule' }

При переходе к /projects/1/sub/1, который является маршрутом внутри модуля маршрутизации раздела, URL-адрес возврата при входе в систему отображается как /projects/:projectId/sub, который фактически является путем маршрута.

Как я могу создать правильный URL-адрес возврата на canLoad? Вот соответствующий код AuthService.

import { Injectable } from '@angular/core';
import { CanActivate, CanLoad, ActivatedRouteSnapshot, RouterStateSnapshot, Router, Route, ActivatedRoute } from '@angular/router';
import { Observable } from 'rxjs';

import { AuthService } from '../services/auth.service';

@Injectable({
  providedIn: 'root'
})
export class AuthGuard implements CanActivate, CanLoad {

  constructor(private authService: AuthService, private router: Router) { }

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
    if (this.authService.isAuthenticated()) {
      return true;
    }
    else {
      //passing the query string to bring the user back to after signin
      this.router.navigate([''], {
        queryParams: {
          return: state.url
        }
      });

      return false;
    }
  }

  canLoad(route: Route): Observable<boolean> | Promise<boolean> | boolean {
    if (this.authService.isAuthenticated()) {
      return true;
    }
    else {
      //passing the query string to bring the user back to after signin
      //alert(route.path)
      this.router.navigate([''], {
        queryParams: {
          return: route.path
        }
      });
      return false;
    }
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...