这个错误是因为在你的代码中没有正确引入 RouterStateSnapshot。在 canActivate 中使用 RouterStateSnapshot 前,需要在模块中导入 RouterModule 和 RouterStateSnapshot。

在你的模块中,导入 RouterModule 和 RouterStateSnapshot:

import { RouterModule, RouterStateSnapshot } from '@angular/router';

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  providers: [AuthGuard, RouterStateSnapshot],
  exports: [RouterModule]
})
export class AppRoutingModule { }

在 canActivate 方法中使用 RouterStateSnapshot:

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

@Injectable()
export class AuthGuard implements CanActivate {
  constructor(private authService: AuthService, private router: Router) { }

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
    if (this.authService.isAuthenticated()) {
      return true;
    } else {
      this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });
      return false;
    }
  }
}

确保你的代码中正确导入了 RouterStateSnapshot,这个错误就会被解决

angular 为什么我在 canActivate 中判断 stateurl 会得到 e NullInjectorError R3InjectorErrorMainModuleRouterStateSnapshot - RouterStateSnapshot - RouterStateSnapshot - RouterStateSnapshot NullInjectorError No pro

原文地址: https://www.cveoy.top/t/topic/cluV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录