Angular 2 では@CanActivate
、コンポーネントをアクティブにするかどうかを決定できるコンポーネントの注釈を指定できます。インターフェイスではない理由は、コンポーネントがインスタンス化される前にコールバックが呼び出されるためです。問題は、そのコールバックに依存関係を注入する方法がわからないことです。また、特定のコンポーネントへのルーティングが許可されているかどうかを判断するために、ログインしているかどうか (および誰としてログインしているか) を通知するサービスが必要です。
@CanActivate コールバックに依存関係を挿入するにはどうすればよいですか? 私はES5を使用していますが、これは機能しません:
app.ListsComponent = ng.router.CanActivate([
app.SessionService,
function(session, instruction) {
console.log(session);
return true;
}
])(app.ListsComponent);
編集: または、routerOnActivate
コンポーネントでライフサイクル イベントを使用this.router.navigate
し、そこにいるはずのないユーザーを遠ざけるために使用することもできます。欠点は、ブラウザーの履歴が壊れることです。特定の URL に到達するたびに非同期でリダイレクトすると、ブラウザーの [戻る] ボタンをあまり便利に使用できなくなります。このような状況の代わりにrouter.navigate
使用する方法はありますか?history.replaceState
history.pushState