2016-11-18 2 views
0

Ich versuche, die Direktive mit Matrix-Parameter zu arbeiten. Bis jetzt ist die einzige Syntaxvariante, die ich bekommen konnte, einfach die Pfadzeichenfolge.Angular 2 Router alternative Syntax für RouterLink-Richtlinie nicht funktioniert

<a routerLink="/state-scratchpad">Syntax 1 - works</a> 
<a routerLink="['/state-scratchpad']">Syntax 2 - doesn't work</a> 
<a routerLink="['/state-scratchpad', { tcomp: '1', tmake: '1-7' }]">Syntax 3 - doesn't work</a> 
<a routerLink="/state-scratchpad;tcomp=1;tmake=8">Syntax 4 - doesn't work</a> 

in der URL-Leiste Navigation zu /state-scratchpad;tcomp=1;tmake=8 auch funktioniert.

Hier sind meine Routen:

const routes = [ 
    { path: '', pathMatch: 'full', redirectTo: '/welcome' }, 
    { path: 'welcome', component: WelcomeComponent }, 
    { path: 'state-scratchpad', component: StateScratchpadComponent, params: { tcomp: '', tmake: '' } } 
]; 

Ich bin Angular 2.0.0 verwenden. Laut der Dokumentation auf der angular.io Website die verschiedenen Syntaxen für Werte sollten alle funktionieren. Aber nur die einfachste Syntax funktioniert. Hier sind die resultierenden Fehlermeldungen:

S1: Works 
S2: Error: Cannot match any routes: '%5B'/state-scratchpad'%5D' 
S3: Error: Cannot match any routes: '%5B'/state-scratchpad'%2C%20%7B%20tcomp%3A%20'1'%2C%20tmake%3A%20'1-7'%20%7D%5D' 
S4: Error: Cannot match any routes: 'state-scratchpad%3Btcomp%3D1%3Btmake%3D8' 

Irgendwelche Ideen?

+0

Sollte das nicht sein '[Router] = "..."'? – jonrsharpe

Antwort

0

Zuerst wird ein Router Link sieht wie folgt aus

<a [routerLink]="['/state-scratchpad', tcomp, tmake]"> 

die URL Basis Dies wird passieren und die params anhängen. Weiter Ihre Route wie dies dann

{ path: 'state-scratchpad/:tcomp/:tmake', component: StateScratchpadComponent} 

aussehen soll, wenn die Komponente geladen wird, um die params zugreifen wie diese

constructor(private route: ActivatedRoute) {} 
ngOnInit(){ 
    this.route.snapshot.params["tcomp"]; 
    this.route.snapshot.params["tmake"]; 
} 
+0

Danke. Ich machte einen einfachen Fehler des ersten Benutzers. Soweit die Params gehen, benutze ich hier Matrix Params anstatt Positionsparametern. Aber was ich erreichen will, ist die Bindung des 'routerLink'-Wertes an ein beobachtbares Pfadsegment. So etwas wie dieses: 'Some Link' Aber ich bin nicht sicher, was die richtige Syntax ist, um dies zum Funktionieren zu bringen. – CalvinDale