2016-05-31 9 views
2

Angularの大ファン、私はルーティング(https://angular.io/docs/ts/latest/guide/router.html)に関するAngular2の公式ドキュメントを読んで最初のテストアプリを構築し、理解できない動作に陥った。Angular2でrouterLinkを必須とするのはなぜですか?

template: ` 


<h1>Component Router</h1> 
    <nav> 
    <a [routerLink]="['/crisis-center']">Crisis Center</a> 
    <a [routerLink]="['/heroes']">Heroes</a> 
    </nav> 
    <router-outlet></router-outlet> 
`, 

それは動作します:AppComponentで

マイテンプレート部分は次のようになります。ブラウザにURLを直接入力するか、routerLinkディレクティブによって生成された定義済みリンクをクリックして、危機管理センターまたは危機管理センターにアクセスできます。

ナビゲーションメニューはもう表示したくありませんが、ブラウザーバーにurlを直接入力することでアプリケーションを/危機の中心や/英雄に移動したいので、navブロックとmyテンプレートは次のようになります。

template: ` 
    <h1>Component Router</h1> 
    <router-outlet></router-outlet> 
`, 

ただし、この新しいバージョンではコンポーネント固有のコンテンツは表示されず、親テンプレート部分のみが表示されます。
注:routerLinkディレクティブを1つだけ保持すると、コンポーネントヒーローと危機管理センターの両方にナビゲートできます。

私が見つけた唯一の回避策は、ディスプレイ:noneをナビゲーションタグに適用することでした。

なぜディレクティブrouterLinkはルーティングを動作させる必要がありますか?私にとっては、それはURLを生成し、ルーティングプロセスに影響を与えない単なる指令でした...

答えて

2

これは既知の問題です。あなたは、代わりにルータがインスタンス化されていないこれらの回避策の1がなければ、あなたのルートコンポーネント

export class AppComponent { 
    constructor(router Router){} 
} 

にルータを注入し、それに応じて何もしないことができます。

+0

これを逃した。どうもありがとう! – krakax

関連する問題