dop*_*man 7 angular2-routing angular2-guards angular
这是警卫:
// 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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是路由器:
import { RouterConfig } from '@angular/router';
import { MyGuard } from './guards/my.guard';
export const AppRoutes : RouterConfig = [
{
path: 'home',
component: HomeComponent,
canActivate: [MyGuard]
}
];
Run Code Online (Sandbox Code Playgroud)
当页面加载时,我得到:
EXCEPTION: Error: Uncaught (in promise): No provider for MyGuard!
Run Code Online (Sandbox Code Playgroud)
我见过没有教程提到如何注入MyGuard作为提供者.我该怎么做呢?
小智 12
我的解决方案是在我的AppModule元数据中将AuthGuard服务添加到提供程序:
@NgModule({
...
providers: [AuthGuard],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
为了能够在整个应用程序中使用服务,您需要在AppModule元数据中提供它.https://angular.io/docs/ts/latest/guide/ngmodule.html上的"服务提供商"部分给了我提示.
你的路由配置应该是这样的:
export const APP_ROUTER_PROVIDERS = [
MyGuard, <== notice this line
provideRouter(AppRoutes )
];
Run Code Online (Sandbox Code Playgroud)
进而
import { APP_ROUTER_PROVIDERS } from './app.routes';
import { AppComponent } from './app.component';
bootstrap(AppComponent, [
APP_ROUTER_PROVIDERS
])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5857 次 |
最近记录: |