2016-04-30 10 views
1

私はangular2の経路指定に問題があります
私のサービスではネストされたルートを作りたいと思っています。コンポーネント "CompnentName"に経路設定がありません

@Component({ 
 
    selector : "app", 
 
    directives : [ROUTER_DIRECTIVES], 
 
    template : ` 
 
    <router-outlet></router-outlet> 
 
    ` 
 
}) 
 

 
@RouteConfig([ 
 
    {path: "/**", redirectTo: ['/User', {userId:0}, 'Main']}, 
 
    {path: "https://stackoverflow.com/users/:userId/...", component: User, name: "User", useAsDefault:true}, 
 
    {path: "/main", component: Main, name: "Main"} 
 
])

このアプリをブートストラップされapp.tsで私のコードです。
以下はuser.tsにユーザーコンポーネントが含まれています。私が作りたい

@Component({ 
 
    selector : "user", 
 
    directives : [ROUTER_DIRECTIVES, NavBar, UserInfo, Main, Feeds, Notebook], 
 
    template : ` 
 
    <div class="dotebook-main"> 
 
     <nav-bar></nav-bar> 
 
     <div class="dotebook-view"> 
 
     <div class="dotebook-body"> 
 
      <router-outlet></router-outlet> 
 
     </div> 
 
     <div class="dotebook-user"> 
 
      <user-info [user]="user"></user-info> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    ` 
 
}) 
 

 
export class User{ 
 
    constructor(){ 
 
    } 
 
} 
 

 
@RouteConfig([ 
 
    {path: "/", redirectTo : ['Main']}, 
 
    {path: "/main", component: Main, name: 'Main', useAsDefault: true}, 
 
    {path: "/feeds", component: Feeds, name: "Feeds"}, 
 
    {path: "/notebook/:notebookId", component: Notebook, name: "Notebook"} 
 
])

'/ユーザー/:userIdを' すべての時間rootになるために、
と私が欲しい '/ユーザー/:ユーザーID /メインのデフォルトページであることが。 「:ユーザーID /メイン/ユーザー/」または:ように「/ユーザー/ユーザーID /フィード」と

ユーザーコンポーネントは
のような子どもたちのルートを持っている必要があります。

だから、app.tsのUserコンポーネントの最後に「/ ...」を追加しました。

ただし、この時点で問題が発生しました。最初の時点で、
私は「redirectTo」を使用する必要があります:私は、ルーティングと思い

は、「メイン」
は、「ユーザーID /メインユーザーは/」行くためにユーザーをするために、ユーザーのコンポーネントで行われたがされなければなりませんapp.tsのルート設定。

となりました。コンポーネント「ユーザー」にはこれに関するルート設定エラーがありません。

私が作成したURL階層の違反だと思います。
私はイベントを推測できません。

誰もこれに似た問題を抱えていますか?
助けてください!
ありがとうございます!

+0

「私のサービスではネストされたルートを作りたい」という音が奇妙に聞こえます。サービスにはルートはなく、コンポーネントのみがあります。最初のコードブロックのルートがどのコンポーネントに適用されているのか、2番目のコードブロックのルートが適用されているコンポーネントの外観(またはどのコンポーネントであるか)はわかりません。 –

+0

ああ、私はユーザーコンポーネントが常に表示されることを意味します。ユーザーコンポーネントにはナビゲーションバーコンポーネントと別のルータコンセントがあり、移動用の「a」タグをクリックすると、ユーザーコンポーネントのルーターコンセントのみを変更したい –

答えて

2

@RouteConfig(..)注釈は、クラス宣言の上になければなりません。このように:

@Component({ 
    selector : "user", 
    ... 
}) 
@RouteConfig([ 
    {path: "/", redirectTo : ['Main']}, 
    {path: "/main", component: Main, name: 'Main', useAsDefault: true}, 
    {path: "/feeds", component: Feeds, name: "Feeds"}, 
    {path: "/notebook/:notebookId", component: Notebook, name: "Notebook"} 
]) 
export class User{ 
    constructor(){ 
    } 
} 
関連する問題