2015-10-06 6 views
6

Ich habe die Dokumentation für den neuen Angular-Router gelesen. Das Beispiel haben sie auf eine Variable für das Routing ist dies:Routing-Variable in Angular2

Komponente/Modul:

angular.module('myApp', ['ngFuturisticRouter']) 
.controller('AppController', ['$router', function($router) { 
    $router.config({ path: '/user/:id' component: 'user' }); 
    this.user = { name: 'Brian', id: 123 }; 
}); 

HTML/Template:

<div ng-controller="AppController as app"> 
    <a router-link="user({id: app.user.id})">{{app.user.name}}</a> 
</div> 

Hier ist meine Komponente:

@RouteConfig([ 
    { path: '/', component: Home, as: 'home' }, 
    { path: '/displays/:id', component: DisplayDetails, as: 'display-details' } 
]) 

Und meine HTML/Vorlage:

<div class="col-md-3" *ng-for="#display of displays"> 
    <a [router-link]="['/display-details({id: display.id})']"><display-card ></display-card></a> 
</div> 

Ich habe auch anstatt, die Komponente alias (display-details) Ich habe versucht, setzen den tatsächlichen Pfad und die Komponente es selbst versucht, aber sie alle geben mir den gleichen Fehler:

EXCEPTION: Component "App" has no route named "display-details({id: display.id})". in [null] 
+1

Versuchen Sie es mit '[router-link] =" ['/ display-details', {id: display.id}] "', übrigens, welche Version benutzen Sie? –

+0

@EricMartinez Danke Mann! Ich benutze alpha.37. Übrigens, du hast mir wirklich mit Angular2 geholfen. Ich denke, du hast alle meine Fragen beantwortet. – ThreeAccents

+0

@EricMartinez Du willst es eine Antwort geben, damit ich ein Häkchen setzen kann – ThreeAccents

Antwort

7

Wie @ vorgeschlagen ThreeAccents

Zitat aus der Dokumentation RouterLink.

RouterLink expects the value to be an array of route names, followed by the params for that level of routing. For instance ['/Team', {teamId: 1}, 'User', {userId: 2}] means that we want to generate a link for the Team route with params {teamId: 1} , and with a child route User with params {userId: 2} .

So ist die Lösung, um Ihre routerLink zu wie folgt zu ändern:

<div class="col-md-3" *ng-for="#display of displays"> 
    <a [routerLink]="['/display-details', {id: display.id}]"> 
     <display-card ></display-card> 
    </a> 
</div> 

Froh, dass es für Sie gearbeitet :)

+1

Ich habe deine Antwort aktualisiert, um die API wiederzugeben 2.0-Beta. Ich denke, es fehlen noch 2 Dinge. Der Link '/ display-details' sollte'/DisplayDetails' sein und der Parameter 'Route als' wurde in 'name' geändert. –

5

Das Syntax in meinem Fall funktioniert:

<div class="col-md-3" *ng-for="#display of displays"> 
    <a [routerLink]="['/display-details', display.id]"> 
     <display-card ></display-card> 
    </a> 
</div> 

mit diesem Router Config:

@RouteConfig([ 
    { path: '/', component: Home, as: 'home' }, 
    { path: '/display-details/:id', component: DisplayDetails } 
])