NoProviderError 在 Angular 2 中使用 CanActivate [英] NoProviderError using CanActivate in Angular 2

查看:26
本文介绍了NoProviderError 在 Angular 2 中使用 CanActivate的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将 Angular 2 与路由器 3.0.0-aplha.8 一起使用.

I'm using Angular 2 with Router 3.0.0-aplha.8.

我正在尝试使用 CanActivate 函数来检查用户是否已通过身份验证.我有一个实现 CanActivate 的 AuthGuard,现在我只返回 true.

I'm trying to use CanActivate function to check if an user is authenticated. I have an AuthGuard that implements CanActivate, for now I only return true.

route.ts

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

import { AuthGuard } from './auth-guard'

import { SecurityComponent } from './security/security.component';
import { AdminDashboardComponent } from './admin/admin.dashboard.component';


export const mainRoutes: RouterConfig = [
{ path: '', component: SecurityComponent,  },
{ path: 'admin', component: AdminDashboardComponent, terminal: true, canActivate: [AuthGuard] }]

export const MAIN_ROUTER_PROVIDER = provideRouter(mainRoutes);

auth-guard.ts

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

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

   canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot){
       return true;
   }
}

当我尝试访问/admin"(AdminDashboardComponent)时,出现此错误:

When I try to access "/admin" (AdminDashboardComponent), I'm getting this error:

我不知道发生了什么.有人有什么想法吗?

I have no idea what is happening. Someone has any idea?

谢谢伊万

推荐答案

我觉得如果你把 MAIN_ROUTER_PROVIDER 改成

I think if you change MAIN_ROUTER_PROVIDER to

export const MAIN_ROUTER_PROVIDER = [provideRouter(mainRoutes), AuthGuard];

它应该可以工作.

这篇关于NoProviderError 在 Angular 2 中使用 CanActivate的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆