2016-08-12 18 views
1

私は常時表示したい家のコンポーネントがあります。ドロップダウンメニューです。メニューのアイテムがクリックされると、フォームが下にポップアップします。私は常にドロップダウンを表示したい。Angular2:子供のルート

私-app.html

<div> 
    <dropdown-selector></dropdown-selector> 
    <router-outlet></router-outlet> 
</div> 

ルーティングがうまく働いたが、私は私が私のindex.htmlで定義されたbaseタグを持っているにもかかわらずError: Cannot match any routes: ''(…)を取得保管:もともと私はこのようにそれを設計しました。

次に、ドロップダウンを親ルートとして定義し、すべてのドロップダウンアイテムルートをその子にする必要があると考えました。

アプリ-routes.ts抜粋

export const APPLICATION_ROUTES: RouterConfig = [ 
    { 
     path: '', 
     component: Home, // dropdown-selector is inside this component 
     children: [ 
      {path: 'forms/1', component: Form1}, 
      {path: 'forms/2', component: Form2}, 
      {path: 'forms/3', component: Form3}, 
      {path: 'forms/4', component: Form4}, 
      {path: 'forms/5', component: Form5}, 
      {path: 'forms/6', component: Form6}, 
      {path: 'forms/7', component: Form7}, 
      {path: 'forms/8', component: Form8} 
     ] 
    } 
]; 

そして、私の-app.htmlを再定義...

私-app.html私は保つ

<div> 
    <router-outlet></router-outlet> 
</div> 

とにかく同じエラーが発生しましたが、今ではドロップダウンも表示されません。また、新しいルータでは、デフォルトルートを設定する方法はないと私は考えています。私は、''がデフォルトルートであると仮定していました。私はAngular2 RC.4を使用しています。

私はこれを間違った方法で設計していますか?そのエラーはどうなっていますか?私はそれを扱っている多くのSOの投稿を見ましたが、誰も私の問題を解決しませんでした。私は私のヘッダとフッタはすべての時間を表示させたい

、とのコンポーネントをナビゲート:

答えて

2

まず第一に、私は私が私の解決策で同じ動作を持っているとして、あなたの最初のデザインは、あなたが欲しいものだと思いますページの真中。

Error: Cannot match any routes: ''(…)

であるあなたの主な問題に今

<headerComponent></headerComponent> 
<router-outlet></router-outlet> 
<footerComponent></footerComponent> 

私はあなたのルータに移動する方法を示してより多くのコードが必要だろうが、私はあなたに、次のヒントを与える:

アプリを起動すると、URLは次のようになります。

http://localhost:39351/ 

したがって、パスは空です: ''

このケースを管理するためのルートも定義する必要があります(この場合は必要ないと思います)。私は私のアプリを起動したとき例えば が、私はそれがデフォルトでコンポーネントをロードしたい、と私はそれをそのように実行します。あなたの場合

{ path: '', redirectTo: '/login', pathMatch: 'full' }, 
{ path: 'login', component: LoginComponent }, 

を、それはあなたがクリックでフォームを表示するようだと、クリックしてそのルートにアクセスします。その後、

<button type="button" (click)="navigate('btn_home')"> 
</button> 

そして、あなたのパスに移動するようにルータを教えて:

navigate(elementID) { 
     switch (elementID) { 
       case 'btn_home': 
        this.router.navigate(['/master']); 
        break; 
       default: 
        break; 
     } 
} 

希望これが役立つことを行うには、あなたのドロップダウン・セレクター・コンポーネントHTMLでは、このようなクリックを管理する必要があります。

+0

これはうまくいきましたが、私は '' 'ゴースト ''コンポーネントに行くためのパスを設定したいと思います。私はそこに何かを表示したくない。私はそのアイデアの音が好きではありません。 – DankestMemes

+0

私自身の解決策では、実際には認証を管理するメインのがあります。次に、残りのアプリケーションを管理する2番目の(上に貼り付けたもの)があります。 この場合、2番目のアウトレットを最初のアウトレットの子として定義する必要があります。あなたがそれを行うのを助けるためにルータでAngular2のドキュメントを参照する必要があります。 これが受け入れられる回答であれば、それを記入してください、本当に感謝します。さらなる助けが必要な場合は、別の質問をすることをためらってください。 –

関連する問題