在Angular2中配置路線時,有沒有辦法設置「基地」canActivate
?因此,所有路線都由相同的基本檢查覆蓋,然後每條路線可以進行更細粒度的檢查。在Angular 2應用程序中爲所有路線使用基地守衛
我有一個AppModule
與路由這樣的:
@NgModule({
imports: [
RouterModule.forRoot([
{
path: '',
component: HomeComponent,
canActivate: [AuthenticationGuardService],
data: { roles: [Roles.User] }
}
])
],
exports: [
RouterModule
]
})
export class AppRoutingModule { }
並且功能模塊FeatureModule
:
@NgModule({
imports: [
RouterModule.forChild([
{
path: "feature",
component: FeatureComponent,
// I'd like to avoid having to do this:
canActivate: [AuthenticationGuardService],
data: { roles: [Roles.User] }
}
])
],
exports: [
RouterModule
]
})
export class FeatureRoutingModule { }
我讓AuthenticationGuardService
檢查用戶是否具有使用角色訪問路線在data
提供。
我可以做些什麼來避免在我所有的功能路由模塊中設置canActivate
和data
?我想在此應用程序中爲所有路線配置一個「基地」canActivate
。
您可以從一個類或輔助函數來創建路由對象。這是最簡單的(也許是唯一可用的)解決方案。 – estus
@estus所以你的意思是我應該這樣做:'RouterModule.forChild([helperService.getRoute(「feature」,FeatureComponent)])?然後,幫助器服務(或類或方法..)總是將基礎Guard添加到生成的路由對象中? – Joel
是的。我會親自去'RouterModule.forChild([new AuthenticatedRoute({path:...,component:...})])' – estus