如何定义queryParams Angular 5路由器

如何定义queryParams Angular 5路由器,angular,angular-router,Angular,Angular Router,我对查询参数有问题。每个路由器都有一些不同的查询参数 $stateProvider允许在$state内定义queryParams .state('contacts.list', { templateUrl: 'contacts.list.html', url: '/test?test1&test2' data: { customData1: 44, customData2: "red" } }) 此代码只允许从que

我对查询参数有问题。每个路由器都有一些不同的查询参数

$stateProvider允许在$state内定义queryParams

.state('contacts.list', {
    templateUrl: 'contacts.list.html',
    url: '/test?test1&test2'
    data: {
        customData1: 44,
        customData2: "red"
    } 
  })
此代码只允许从queryParams获取test1和test2字段

关于新的角度路由器,如果我需要观看queryParams,我应该订阅

this.activatedRoute.queryParams.subscribe(params => {

});
这段代码有一个问题,如果我在url中键入一些第三方test3=lol,我将在参数params中获得这个参数,我不想在所有地方都对它进行过滤

如何在Angular 5路由器中设置“/test?test1和test2”

goProducts() {
  this.router.navigate(['/products'], { queryParams: { order: 'popular', 'price-range': 'not-cheap' } });
}
url将是这样的

在组件构造函数中

this.activatedRoute.queryParams.subscribe(params => {

});

希望这有帮助。用于回答您的问题。

如果我使用这种方法,我会遇到这样的情况:用户输入某个第三方参数到url test=lol,然后按enter键我的订阅将处理此更改,我将在我的handler中获得此意外参数测试,然后您必须在不使用查询参数的情况下将数据发送到该组件。。如果需要对用户隐藏数据,则必须以另一种方式进行。使用服务来完成此操作。