By accessing myproject.dev/people?filter%5Bindustry%5D=finance&filter%5BstartWith%5D=a
, Angular2 point the url to myproject.dev/people
Here is my RouteConfig:
@RouteConfig([
{
path: '/people',
name: config.route.main,
component: MainComponent,
useAsDefault: true
}
])
In MainComponent:
/// <reference path="../../../typings/angular2.d.ts" />
import {Component, Injector} from 'angular2/core';
import {ROUTER_DIRECTIVES, Router, RouteParams} from 'angular2/router';
import {BaseResourceComponent} from '../../Component/BaseResourceComponent';
import {Status as MainStatus} from '../../reusable/modules/status.svc';
import {Status} from '../../reusable/modules/status.svc';
import {Config} from "./Config";
import URI from 'urijs';
export class MainComponent extends BaseResourceComponent {
constructor(config: Config, status: Status, mainStatus: MainStatus, private router: Router, private routeParams: RouteParams) {
super(config, status, mainStatus);
}
onInit() {
var path = new URI(window.location.href);
path.setQuery('filter[industry]', 'fashion');
path.setQuery('filter[startWith]', 'a');
console.log(path);
console.log(this.router);
//this.router.root.lastNavigationAttempt = "/people?filter%5Bindustry%5D=finance&filter%5BstartWith%5D=a"
console.log(this.routeParams);
// this.routeParams returns {params: Object}
// this.routeParams.params.get('filter') return null
}
}
I still can get it from this.router.root.lastNavigationAttempt
, but this is kind of tricky way to get it only. Any better way to get the GET parameters?
My solution : certainly not the best way t odo it but it work : I assume that you have this kin of url : http://localhost:8080/contextPath/index.html?login=true#token_type=Bearer&expires_in=9999&access_token=xxxXXXXXxxx
Certainly not the best way to do it but it work perfectly well :)
In the root component you can inject the router and subscribe, then on route events get the params from the router like
On components added by the router you can inject
RouteParams
directly likePlunker example
@Günter Zöchbauer is correct. Child route can only use
matrix parameter
but notquery parameter
.