最近、angrx のルーターから angular2 のルーターに移動しました。また、angular 2 rc4 を使用しています。
私のルートは次のようになります。
export const: Routes = [
{path: "appRoute1", component: "appComponent1", guards: [HashGuard, hasSelectedGuard]},
{path: "appRoute2", component: "appComponent2", guards: [HashGuard, hasSelectedGuard]},
]
HashGuard には 1 つの関数 (およびコンストラクター) しかありません。
protectRoute(candidate : TravesalCandidate){
if (!window.location.hash){
this.router.go(HOME_ADDRESS);
}
return Observable.of(true);
}
同様に、HasSelectedGuard には関数が 1 つしかありません。
protectRoute(candidate : TravesalCandidate){
if (!this.currentSelectionService.hasSelectedPerson()){
this.router.go(HOME_ADDRESS);
return Observable.of(false);
}
return Observable.of(true)
}
私が持っているべきであるように、私は必要なものは何でもブートストラップしています:
bootstrap(AppComponent, [
provideRouter(routes, HashLocationStrategy),
Router,
HashGuard,
CurrentSelectionService
]
複数のリンクを持つ sidemenu コンポーネントがあり、他に appRoute1 と appRoute2 があります。
<a [linkTo]="'/appRoute1'"> ... </a>
<a [linkTo]="'/appRoute2'"> ... </a>
リンクの 1 つをクリックすると、想定どおりに URL が変更されますが、ページ自体は読み込まれません (クリック後にリクエストが送信されず、コンポーネントのコンストラクターが読み込まれません)。
助けていただければ幸いです。