这是警卫:
// my.guard.ts import { Injectable } from '@angular/core'; import { ActivatedRouteSnapshot,CanActivate,RouterStateSnapshot } from '@angular/router'; Injectable() export class Myguard implements CanActivate { canActivate(next: ActivatedRouteSnapshot,prev: RouterStateSnapshot) { console.log('GUARD:',next,prev); return true; } }
这是路由器:
import { RouterConfig } from '@angular/router'; import { Myguard } from './guards/my.guard'; export const AppRoutes : RouterConfig = [ { path: 'home',component: HomeComponent,canActivate: [Myguard] } ];
当页面加载时,我得到:
EXCEPTION: Error: Uncaught (in promise): No provider for Myguard!
我见过没有教程提到如何注入Myguard作为提供者.我该怎么做呢?
解决方法
我的解决方案是在我的AppModule元数据中将AuthGuard服务添加到提供程序:
@NgModule({ ... providers: [AuthGuard],}) export class AppModule {}
为了能够在整个应用程序中使用服务,您需要在AppModule元数据中提供它. https://angular.io/docs/ts/latest/guide/ngmodule.html的“服务提供商”部分给了我一些提示.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。