2016-11-23 2 views
3

meine URL zu bekommen ist:Angular2: Wie Abfrage params in Matrizenschreibweise

http://localhost/#/foo;nb=25;page=1 

in der Komponente zu dieser URL verknüpft, das tue ich:

ngOnInit() { 
     this.queryParamSub = this._route.queryParams.subscribe(queryParams => { 
      console.log(queryParams) 
     }) 
} 

Allerdings halte ich ein leeres Objekt bekommen als queryParams. Ich habe versucht, mit meiner URL als: http://localhost/#/foo?nb=25&page=1 und es hat gut funktioniert. Irgendeine Idee, wie ich dieses Problem lösen kann, wenn ich die Matrixnotation verwenden möchte?

EDIT this._route ist ActivatedRoute

EDIT Hier ist meine app-routing.module.ts

@NgModule({ 
    imports: [ 
     RouterModule.forChild([ 
      { 
       path: "", 
       component: AppComponent, 
       children: [ 
        { 
         path: "foo", 
         component: HomepageComponent, 
         data: { 
          name: 'home' 
         } 
        } 
       ] 
      }] 
     ) 
    ], 
    exports: [ 
     RouterModule 
    ] 
}) 

export class AppRoutingModule {} 

Die Komponente in dem ich versuche, die Abfrage param HomepageComponent

Antwort

2

Abfrageparameter auf der Root-Route zu bekommen sind Serialisiert als Abfrageparameter ?xxx=yyy, Abfrageparameter auf untergeordneten Routen werden als Matrixparameter ;xxx=yyy serialisiert.

Sie müssen also die Parameter zu einem untergeordneten Routensegment hinzufügen, um sie in Matrixnotation zu erhalten.

+0

Sorry Kumpel aber ich fürchte ich sehe nicht was du meinst mit "füge sie zu einem untergeordneten Routensegment hinzu" ... – Scipion

+0

Wenn du eine Route hast '{path: 'root', children: [{path: 'Kind', Komponente: Kind}]} 'und' this.router.navigate (['/ root', {nb: 25}, 'Kind', {Seite: 1}]) 'Sie sollten' http:// localhost/#/root/child; page = 1? nb = 25' (am Ende von https://angular.io/docs/ts/latest/guide/router.html#!#optional-route-parameters) –

+0

Es tut mir leid, es scheint, ich habe deine Frage falsch interpretiert. Zusätzlich zu meiner Antwort, die erklärt, wenn Matrixparameter verwendet werden, müssen Sie '_route.queryParams.subscribe()' auf die rechte Komponente anwenden, die von der Route hinzugefügt wurde, zu der die Matrixparameter gehören. Ich weiß nicht, ob die von Ihnen gestellte URL tatsächlich gültig ist. Wurde diese URL von Angular am Router erstellt oder hast du sie erfunden? –

Verwandte Themen