angular 为什么我在 canActivate 中判断 stateurl 会得到 e NullInjectorError R3InjectorErrorMainModuleRouterStateSnapshot - RouterStateSnapshot - RouterStateSnapshot - RouterStateSnapshot NullInjectorError No pro
这个错误是因为在你的代码中没有正确引入 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,这个错误就会被解决
原文地址: https://www.cveoy.top/t/topic/cluV 著作权归作者所有。请勿转载和采集!