【问题标题】:Using activatedRout.snapshot in Angular Service在 Angular 服务中使用 activateRout.snapshot
【发布时间】:2020-06-11 20:43:47
【问题描述】:

我在 Angular 中创建了这项服务,它可以防止 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】:

    尝试从 MeAdminGuardService 类中的服务读取 ID,而不是从 this.route.snapshot.params['id'] 中读取它。

    【讨论】:

      猜你喜欢
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2019-03-31
      • 2016-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多