2016-12-12 1 views
2

이 간단한 라우팅 예가 주어진다면 :page 인수를 제한 할 수 있기를 바랍니다.Angular2 라우팅 매개 변수를 제한하는 방법은 무엇입니까?

const appRoutes: Routes = [ 
    { path: ':page', component: PageFoundComponent }, 
    { path: '**', component: PageNotFoundComponent } 
]; 

바람직하게는 문자열 배열을 사용하십시오. 여기서 예상되는 동작은 :page을 배열 요소 중 하나로 확인하고 PageNotFoundComponent으로 라우팅하는 것입니다.

// pseudo code 
let knownPages = ["welcome", "shop", "about"]; 
(...) 
{ path: ':[email protected]', component: PageFoundComponent } 

개념은 Symfony2 라우팅 메커니즘에서 빌려 왔습니다.

어떻게 접근해야합니까?

답변

1

최근에

{ path: ':page', component: PageFoundComponent, matcher: ... }, 

소개 된 사용자 정의 UrlMatcher을 사용할 수 있지만 아직 그것에 대해 어떤 문서를 발견하지 않았습니다.

당신은 라우터 Guards를 사용하는 것이 좋습니다 또한 https://angular.io/docs/ts/latest/api/router/index/Routes-type-alias.html

+2

여기에 예제가 있습니다 : https://angular.io/api/router/UrlMatcher – Frank

0

참조하십시오. 구체적으로는 CanActivate Guard 일 가능성이 큽니다. 여러 경비를 사용할 수 있습니다

import { AuthGuard }    from '../auth-guard.service'; 
 

 
const adminRoutes: Routes = [ 
 
    { 
 
    path: ':page', 
 
    component: Component, 
 
    canActivate: [AuthGuard] 
 
    } 
 
]; 
 

 
@NgModule({ 
 
    imports: [ 
 
    RouterModule.forChild(adminRoutes) 
 
    ], 
 
    exports: [ 
 
    RouterModule 
 
    ] 
 
}) 
 
export class RoutingModule {}

참고. 경로가 배열에 있으면 참을 반환 할 수 있고 하나는 인증과 관련 될 수 있고 하나는 역할과 관련 될 수 있습니다.

관련 문제