2016-04-30 8 views
1

Ich habe ein Problem mit dem Routing in angular2
Ich möchte geschachtelte Route in meinem Dienst machen, aber ich bin fest.Komponente "CompnentName" hat keine Route config

@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"} 
 
])

dies in app.ts mein Code, die die App Bootstrapping.
und unten ist die user.ts Benutzerkomponente enthält.

@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"} 
 
])

Ich möchte machen '/ user /: userId' die ganze Zeit die Wurzel zu sein,
und ich möchte '/ user /: userId/main' default Seite sein . ': UserId/main/user /' oder '/ user /: userId/Feeds' und so weiter

Benutzerkomponenten sollten Kinder Routen wie
haben.

Also habe ich '/ ...' am Ende der Benutzerkomponente URL in app.ts hinzugefügt.

aber ich habe ein Problem an dieser Stelle.

Ich denke, Routing „Main“ sollten in Benutzerkomponente getan werden, aber,
Benutzer machen gehen „Benutzer /: userId/main“ beim ersten Mal,
Ich muss verwenden „RedirectTo“ in die app.ts routeConfig.

und ich bekam Komponente "Benutzer" hat keine Route Config Fehler auf diesem.

Ich denke, es ist eine Verletzung der URL-Hierarchie, die ich gemacht habe.
aber ich kann nicht erraten, was die Lösung ist.

hatte jemand das ähnliche Problem mit diesem?
Hilfe!
danke im voraus!

+0

"Ich möchte verschachtelte Route in meinem Service machen" klingt seltsam. Dienste haben keine Routen, nur Komponenten. Es ist nicht offensichtlich, auf welche Komponenten die Routen in Ihrem ersten Codeblock angewendet werden und nicht, wie die Komponente (oder welche Komponente überhaupt) aussieht, auf die die Routen im zweiten Codeblock angewendet werden. –

+0

oh ich meine, ich möchte User-Komponente immer angezeigt werden. Die Benutzerkomponente hat eine Nav-Bar-Komponente und einen weiteren Router-Ausgang, und wenn ich "a" -Tags zum Verschieben anklicke, möchte ich nur den Router-Ausgang in der Benutzerkomponente ändern –

Antwort

2

Die Annotation @RouteConfig(..) muss über der Klassendeklaration stehen. So:

@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(){ 
    } 
} 
Verwandte Themen