我正在为我的angular2应用程序进行基于令牌的身份验证,我使用最新的r.c.3路由器
完成了它这是我在site.routes.ts文件中的代码
import {Authentication} from './authenticaton.service';
import { RouterConfig,CanActivate } from '@angular/router';
import { SiteComponent} from './site.component';
import { LoginComponent } from './login.component';
import { ProfileComponent } from './profile.component';
export const SITE_ROUTES: RouterConfig = [
{
path: '',
component: SiteComponent,
children: [
{
path: 'login',
component: LoginComponent
},
{
path: 'profile',
component: ProfileComponent,
canActivate: [Authentication]
}
]
}
];
在编译期间没有错误,但是当我尝试访问配置文件路由时,它在控制台中给出了这个错误。
没有身份验证提供商!
我尝试过提供身份验证提供程序,但x.routes.ts文件中不支持装饰器
这是我的authentication.service.ts文件
import { Injectable } from '@angular/core';
import { CanActivate,Router,ActivatedRouteSnapshot,RouterStateSnapshot } from '@angular/router';
import { AuthService } from './auth.service';
@Injectable()
export class Authentication implements CanActivate {
constructor(private authService: AuthService, private router: Router) {}
canActivate(
// Not using but worth knowing about
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot
) {
if (this.authService.isLoggedIn) { return true; }
this.router.navigate(['/login']);
return false;
}
}
答案 0 :(得分:1)
尝试在site.routes.ts中添加带路由器提供程序的const:
export const APP_ROUTER_PROVIDERS = [
provideRouter(SITE_ROUTES),
Authentication
];
然后将APP_ROUTER_PROVIDERS添加到引导函数中。
import { APP_ROUTER_PROVIDERS } from 'site.routes.ts';
bootstrap(AppComponent, [
...
APP_ROUTER_PROVIDERS
...
]