Leo*_*eon 6 typescript angular2-routing angular
我正在尝试创建路线保护,阅读一些博客和Angular 2官方文档.但我仍然无法使其发挥作用.
这是RouteGuard(我已经删除了日志记录逻辑,以确保问题出在路由中,而不是在身份验证逻辑中.):
import { Observable } from 'rxjs/Observable';
import { Injectable } from '@angular/core';
import { Router, CanActivate, CanActivateChild, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
@Injectable()
export class RouteGuard implements CanActivate {
constructor() {
var a = 5;
console.log("RouterGuard called");
}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
console.log("RouterGuard called");
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里有一些路线:
import { RouteGuard } from './common/routeGuard';
import { ClassifiersComponent } from './components/classifiers/classifiers.component';
import { Routes } from '@angular/router';
import { HomeComponent } from './components/home/home.component';
export const routes: Routes = [
{ path: '', component: HomeComponent },
{ path: 'classifiers', component: ClassifiersComponent, canActivate: [RouteGuard] },
];
Run Code Online (Sandbox Code Playgroud)
然后我在bootstrapper方法中传递它们:
import { RouteGuard } from './app/common/routeGuard';
import { ClassifiersComponent } from './app/components/classifiers/classifiers.component';
import { HomeComponent } from './app/components/home/home.component';
import { routes } from './app/app.routes';
@NgModule({
imports: [
RouterModule.forRoot(routes)
],
providers: [
{ provide: LocationStrategy, useClass: PathLocationStrategy },
{ provide: APP_BASE_HREF, useValue: '/' },
RouteGuard
],
declarations: [
AppComponent,
HomeComponent,
ClassifiersComponent
],
bootstrap: [AppComponent]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
我不确定这一切有什么问题,可能是我错过了一些重要的东西.从调试我可以看出它正在击中canActivate()断点,但不执行console.log,构造函数也是如此.
编辑: 没有任何路由验证的其他路由工作正常.
EDIT2: 我使用的是角度/核心2.2.0,角度/路由器3.2.0
| 归档时间: |
|
| 查看次数: |
1768 次 |
| 最近记录: |