1

最近、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 が変更されますが、ページ自体は読み込まれません (クリック後にリクエストが送信されず、コンポーネントのコンストラクターが読み込まれません)。

助けていただければ幸いです。

4

1 に答える 1

0

結局、Angular のコンポーネントに戻ってrouter.navigate([URL]).

この記事の執筆時点では、NgRX のルーターはまだ機能していませんでした。

于 2016-08-09T20:02:25.317 に答える