2017-01-15 9 views
1

Angular2 Routingを学習し、Welcome Pageを表示しようとしています。 マイアプリは(単に他のルートにリンクしてそれだけで空白のページです)ウェルカムページ3ページAngular 2 Routing with Home Page

  • を持って
  • ホームページ - いくつかのテキストと説明
  • 藤堂一覧ページ - のToDo
一覧

問題は、ウェルカムページを表示できないことです。ホームページを自動的に読み込み、デフォルトでHomeComponentからコンテンツを表示します。

スクリーンショットに示すように、私は2つのリンクのみを表示したいと思います。私はそれがクリックされたときだけホーム/ Todoからコンテンツをロードしたいと思う。しかし、デフォルトでは、localhost:xxx/Homeに行き、ホームページをロードします。

enter image description here

私は以下のようにAppComponentに「」空白のパスを設定しようとしましたが、それは二回AppComponentをロードし、リンクを2回表示されます。

{ path: '', component: AppComponent, pathMatch: 'full' }, 

app.module.ts

@NgModule({ 
    imports: [ 
     BrowserModule, 
     HttpModule, 
     RouterModule.forRoot([ 
      { path: 'home', component: HomeComponent }, 
      { path: 'todo', component: TodoListComponent }, 
      { path: '**', redirectTo: 'home', pathMatch: 'full' } 
     ]) 
    ], 
    declarations: [ 
     AppComponent, 
     HomeComponent, 
     TodoListComponent 
    ], 
    bootstrap: [AppComponent], 
}) 
export class AppModule { } 

app.component.ts

import { Component } from "@angular/core" 

@Component({ 
    moduleId: module.id, 
    selector: 'app', 
    template: ` 
    <div> 
     <nav class='navbar navbar-default'> 
      <div class='container-fluid'> 
       <a class='navbar-brand'>{{pageTitle}}</a> 
       <ul class='nav navbar-nav'> 
        <li><a [routerLink]="['/home']">Home</a></li> 
        <li><a [routerLink]="['/todo']">To Do</a></li> 
       </ul> 
      </div> 
     </nav>   
    </div> 
    <div class='container'> 
      <router-outlet></router-outlet> 
     </div> 
    ` 
}) 
export class AppComponent {  
} 

ホーム/ home.component.ts

import { Component } from '@angular/core'; 

@Component({ 
    moduleId: module.id,  
    templateUrl: "home.component.html"  
}) 
export class HomeComponent { 
} 

ホーム/ home.component.html

<h1>Hello from Home Component</h1> 
<h2>This is my first TODO App for Angular 2...</h2> 

答えて

2

私は、URLが/家であるとき、あなたの<router-outlet></router-outlet>homeで基本となるコンポーネントを変更しますので、HomeComponentが表示されている理由があると思います。あなたはまた、意味あなたapp.module.ts

{ path: '**', redirectTo: 'home', pathMatch: 'full' }にこの行、

を持っていること/homeまたは/todoがあなたのHomeComponentポップ・アップを行います一致しないあなたのすべてのURL。リダイレクトは、

{ path: '**', redirectTo: 'home', pathMatch: 'full' } か、''(または新しいPageNotFoundComponent)にリダイレクトすることができます。

また、ページの読み込み時に、メニュー内の項目(自宅または仕事場)が選択されていないことを確認してください。

何を上の行に言及することはあり

任意のURLがある場合

0

あなたはこの行 { '**'、redirectTo: 'ホーム'、pathMatch '完全な' パス}を削除する必要があります/ homeや/ todoが/ homeにリダイレクトされるようになります。常にホームを表示するようにします。

だからあなたapp.module.tsは、この問題を修正する

@NgModule({ 
 
    imports: [ 
 
    BrowserModule, 
 
    RouterModule.forRoot([ 
 
     { path: 'home', component: HomeComponent }, 
 
     { path: 'todo', component: TodoListComponent }, 
 
     { path: '**', redirectTo: 'home', pathMatch: 'full' } 
 
    ]) 
 
    ], 
 
    declarations: [ 
 
    AppComponent, 
 
    HomeComponent, 
 
    TodoListComponent 
 
    ], 
 
    bootstrap: [AppComponent], 
 
}) 
 
export class AppModule { }

でなければなりません。私が試した、それは、角2 http://www.angularinfo.com/routings/

でルーティングを使用するための ScreenShot

チェック下のリンクを修正しました