在Angular Service中使用ActivatedRout.snapshot

问题描述 投票:0回答:1

我在Angular中创建了此服务,该服务可防止ID与链接中的ID不同的用户转到该页面,但idTemp未定义。我在做什么错?

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

@Injectable({
  providedIn: 'root',
})
export class MeAdminGuardService implements CanActivate {
  constructor(private router: Router, private route: ActivatedRoute) {}
  canActivate(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot
  ):
    | boolean
    | import('@angular/router').UrlTree
    | import('rxjs').Observable<boolean | import('@angular/router').UrlTree>
    | Promise<boolean | import('@angular/router').UrlTree> {
    var idTemp = this.route.snapshot.params['id'];
    console.log('ID:', idTemp);
    if (
      JSON.parse(localStorage.getItem('currentUser')).role == 'Admin' ||
      JSON.parse(localStorage.getItem('currentUser')).id == idTemp
    ) {
      return true;
    }
    this.router.navigate(['/homepage']);
  }
}
angular typescript frontend angular-services
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.