2017-05-04 14 views
0

angularjsに戻る(ui-routerを使用)。あなたのルートにメタデータを追加し、ルート変更のメタデータを使用することができます。ガード内の角経路メタデータ

は角では、このためのガードがありますが、私はルート定義のうちのメタデータを取得する方法を見つけ出すように見えることはできません。

あなたはより具体的な例を与えるために、私は、ルートにメタデータを追加できるようにしたいのは、必要な役割とまたは許可を言わせて、ガードは力仕事を行う必要があります。

ルートの定義:私のガードで

RouterModule.forChild([ 
    { 
     path: '', 
     component: MyComponent, 
     data: { 
      permissions: ["view"], 
      roles: ["admin", "user"] 
     } 
    }, 
    ... 
]); 

そして:

constructor(private myService: MyService, private router: Router) {} 

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 
    //How to get a hold of the data defined for the current route ? 
    console.log(route.data); //returns an empty object 
} 

答えて

1

route.data[ 'permissions' ][ 0 ]MyGuardcanActivate方法で文字列viewでなければなりません。 MyGuardCanActivateを実装する必要があります。ルーティングは次のようになります。

{ 
    path: '', 
    component: MyComponent, 
    data: { 
     permissions: ["view"], 
     roles: ["admin", "user"] 
    }, 
    canActivate: [ MyGuard ] 
} 

このルーティングは、ルートのルートにアクセスするときに機能します。 A detailed explanationは公式角サイトで見つけることができます。

+0

私のガードが間違ったルート定義にあったことは、後で分かりました。とにかくありがとう – RVandersteen

関連する問題