2016-03-31 18 views
3

アプリの外にangle2アプリのルータリンクを定義することが悪い習慣であるかどうかは疑問でした。またはそれを行うより良い方法がある場合。アプリテンプレートの外にルートリンクを角度2で定義する

angular2のドキュメントでは、ルーティングの例を示し、アプリケーションテンプレート内のリンクを定義します(下記参照)。

@Component({ 
    selector: 'my-app', 
    template: ` 
    <h1>Component Router</h1> 
    <nav> 
     <a [routerLink]="['CrisisCenter']">Crisis Center</a> 
     <a [routerLink]="['Heroes']">Heroes</a> 
    </nav> 
    <router-outlet></router-outlet> 
    `, 
    directives: [ROUTER_DIRECTIVES] 
}) 
@RouteConfig([ 
    {path:'/crisis-center', name: 'CrisisCenter', component: CrisisListComponent}, 
    {path:'/heroes',  name: 'Heroes',  component: HeroListComponent} 
]) 
export class AppComponent { } 

この例では、これらのリンクは<a [routerLink]="['CrisisCenter']">Crisis Center</a>のリンクを定義しています。

しかし、私はこれをしなかった場合:アプリ内でのナビゲーションのために働く

<html> 
    <head></head> 
    <body> 
     <nav> 
      <a href="#/crisis-center">Crisis Center</a> 
     </nav> 

     <div> 
      <my-app></my-app> 
     </div> 
    </body> 
</html> 

でしょうか?

私はアプリの外に置いておきたい理由は、Symfonyの変数に基づいて(hide/show)多くの権限を扱っているからです。

答えて

1

これは問題ありませんが、RouteConfigとrouter-outletを使用する主な理由は、ページの一部をルータのアウトレットに読み込むためです。したがって、通常のアンカータグを使用すると、SPA(単一ページアプリケーション)ではなくなります。

+0

ええ、私がやっているやり方では、ページを更新しないでしょう。彼らが 'href = '#/ crisis-center''でリンクをクリックすると、urlの変更を受け取り、ルーターアウトレットに角ページをロードするはずです。 – xil3

+0

Angular 2はURLの2つのスタイル、 '/ crisis-center /'と '#/ crisis-center /'をサポートしています。これは 'LocationStrategy'プロバイダ経由で設定できます:' PathLocationStrategy'と 'HashLocationStrategy'。その機能を利用したい場合は、[routerLink]を使用してください。 [詳細情報](https://angular.io/docs/ts/latest/guide/router.html#!#browser-url-styles) – creator

関連する問題